1 /* { dg-do compile } */
2 /* { dg-options "-O2 -ffast-math" } */
3 /* { dg-require-effective-target c99_runtime } */
5 extern void link_error(void);
7 #define T(TYPE, C_TY, FNAME) \
8 void f_##FNAME##_1 (TYPE a) \
10 TYPE t1 = 1.0##C_TY / a; \
11 TYPE t2 = __builtin_##FNAME (t1); \
12 TYPE t3 = __builtin_##FNAME (a); \
17 void f_##FNAME##_2 (TYPE a) \
19 TYPE t1 = 2.0##C_TY / a; \
20 TYPE t2 = __builtin_##FNAME (t1); \
21 TYPE t3 = __builtin_##FNAME (2.0); \
22 TYPE t4 = __builtin_##FNAME (a); \
27 void f_##FNAME##_3 (TYPE a, TYPE b) \
29 TYPE t1 = __builtin_##FNAME (a); \
30 TYPE t2 = __builtin_##FNAME (b); \
33 TYPE t5 = __builtin_##FNAME (t4); \
37 void f_##FNAME##_4 (TYPE a, TYPE b) \
39 TYPE t1 = __builtin_##FNAME (a); \
40 TYPE t2 = __builtin_##FNAME (b); \
43 TYPE t5 = __builtin_##FNAME (t4); \
48 #define TEST_LOGS(TYPE, C_TY, F_TY) \
49 T (TYPE, C_TY, log##F_TY) \
50 T (TYPE, C_TY, log2##F_TY) \
51 T (TYPE, C_TY, log10##F_TY)
54 TEST_LOGS (double, , )
55 TEST_LOGS (float, f
, f
)
56 TEST_LOGS (long double, L
, l
)