void funf(float); void fund(double); void funl(long double); #define fung(X) _Generic(X, \ float: funf, \ default: fund, \ long double: funl) (X) #define TEST(name, T) \ static void test ## name(T a) { return fung(a); } TEST(f, float) TEST(d, double) TEST(l, long double) /* * check-name: generic-functions * check-command: test-linearize $file * * check-output-start testf: .L0: call funf, %arg1 ret testd: .L2: call fund, %arg1 ret testl: .L4: call funl, %arg1 ret * check-output-end */