OSDN Git Service

* gcc.c-torture/execute/960321-1.x: Remove.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / 20050121-1.c
1 /* PR middle-end/19551 */
2
3 extern void abort ();
4
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 }                                               \
14                                                 \
15 void                                            \
16 bar_##name (type *x)                            \
17 {                                               \
18   *x = __real foo_##name (5);                   \
19 }                                               \
20                                                 \
21 void                                            \
22 baz_##name (type *x)                            \
23 {                                               \
24   *x = __imag foo_##name (5);                   \
25 }
26
27 typedef long double ldouble_t;
28 typedef long long llong;
29
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
39
40 int
41 main (void)
42 {
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 ();                                 \
53   }
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;
63 }