1f08c3bdfSopenharmony_civoid funf(float); 2f08c3bdfSopenharmony_civoid fund(double); 3f08c3bdfSopenharmony_civoid funl(long double); 4f08c3bdfSopenharmony_ci 5f08c3bdfSopenharmony_ci#define fung(X) _Generic(X, \ 6f08c3bdfSopenharmony_ci float: funf, \ 7f08c3bdfSopenharmony_ci default: fund, \ 8f08c3bdfSopenharmony_ci long double: funl) (X) 9f08c3bdfSopenharmony_ci 10f08c3bdfSopenharmony_ci#define TEST(name, T) \ 11f08c3bdfSopenharmony_cistatic void test ## name(T a) { return fung(a); } 12f08c3bdfSopenharmony_ci 13f08c3bdfSopenharmony_ciTEST(f, float) 14f08c3bdfSopenharmony_ciTEST(d, double) 15f08c3bdfSopenharmony_ciTEST(l, long double) 16f08c3bdfSopenharmony_ci 17f08c3bdfSopenharmony_ci/* 18f08c3bdfSopenharmony_ci * check-name: generic-functions 19f08c3bdfSopenharmony_ci * check-command: test-linearize $file 20f08c3bdfSopenharmony_ci * 21f08c3bdfSopenharmony_ci * check-output-start 22f08c3bdfSopenharmony_citestf: 23f08c3bdfSopenharmony_ci.L0: 24f08c3bdfSopenharmony_ci <entry-point> 25f08c3bdfSopenharmony_ci call funf, %arg1 26f08c3bdfSopenharmony_ci ret 27f08c3bdfSopenharmony_ci 28f08c3bdfSopenharmony_ci 29f08c3bdfSopenharmony_citestd: 30f08c3bdfSopenharmony_ci.L2: 31f08c3bdfSopenharmony_ci <entry-point> 32f08c3bdfSopenharmony_ci call fund, %arg1 33f08c3bdfSopenharmony_ci ret 34f08c3bdfSopenharmony_ci 35f08c3bdfSopenharmony_ci 36f08c3bdfSopenharmony_citestl: 37f08c3bdfSopenharmony_ci.L4: 38f08c3bdfSopenharmony_ci <entry-point> 39f08c3bdfSopenharmony_ci call funl, %arg1 40f08c3bdfSopenharmony_ci ret 41f08c3bdfSopenharmony_ci 42f08c3bdfSopenharmony_ci 43f08c3bdfSopenharmony_ci * check-output-end 44f08c3bdfSopenharmony_ci */ 45