annotate gcc/testsuite/gcc.dg/builtin-tgmath-3.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* Test __builtin_tgmath: integer arguments mapped to _Float64. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-do run } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 /* { dg-options "" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 /* { dg-add-options float32 } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 /* { dg-add-options float64 } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 /* { dg-require-effective-target float32_runtime } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 /* { dg-require-effective-target float64_runtime } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 extern void abort (void);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 extern void exit (int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 #define CHECK_CALL(C, E, V) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 do \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 if ((C) != (E)) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 abort (); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 extern __typeof (C) V; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 } \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 while (0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 extern _Float32 var_f32;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 _Float32 t1f (float x) { return x + 1; }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 _Float32 t1d (double x) { return x + 2; }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 _Float32 t1l (long double x) { return x + 3; }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 _Float32 t1f64 (_Float64 x) { return x + 4; }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 #define t1v(x) __builtin_tgmath (t1f, t1d, t1l, t1f64, x)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 static void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 test_1 (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 float f = 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 double d = 2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 long double ld = 3;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 _Float64 f64 = 4;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 int i = 5;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 CHECK_CALL (t1v (f), 2, var_f32);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 CHECK_CALL (t1v (d), 4, var_f32);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 CHECK_CALL (t1v (ld), 6, var_f32);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 CHECK_CALL (t1v (f64), 8, var_f32);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 CHECK_CALL (t1v (i), 9, var_f32);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 main (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 test_1 ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 exit (0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 }