PR middle-end/77357 - strlen of constant strings not folded
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20050121-1.c
blob9d5dec416421792e8e9d6afb850fa1b3e256d820
1 /* PR middle-end/19551 */
3 extern void abort ();
5 #define T(type, name) \
6 __attribute__((pure)) _Complex type \
7 foo_##name (int x) \
8 { \
9 _Complex type r; \
10 __real r = x + 1; \
11 __imag r = x - 1; \
12 return r; \
13 } \
15 void \
16 bar_##name (type *x) \
17 { \
18 *x = __real foo_##name (5); \
19 } \
21 void \
22 baz_##name (type *x) \
23 { \
24 *x = __imag foo_##name (5); \
27 typedef long double ldouble_t;
28 typedef long long llong;
30 T (float, float)
31 T (double, double)
32 T (long double, ldouble_t)
33 T (char, char)
34 T (short, short)
35 T (int, int)
36 T (long, long)
37 T (long long, llong)
38 #undef T
40 int
41 main (void)
43 #define T(type, name) \
44 { \
45 type var = 0; \
46 bar_##name (&var); \
47 if (var != 6) \
48 abort (); \
49 var = 0; \
50 baz_##name (&var); \
51 if (var != 4) \
52 abort (); \
54 T (float, float)
55 T (double, double)
56 T (long double, ldouble_t)
57 T (char, char)
58 T (short, short)
59 T (int, int)
60 T (long, long)
61 T (long long, llong)
62 return 0;