OSDN Git Service

2009-06-29 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / 991228-1.c
1 __extension__ union { double d; int i[2]; } u = { d: -0.25 };
2
3 /* This assumes the endianness of words in a long long is the same as
4    that for doubles, which doesn't hold for a few platforms, but we
5    can probably special case them here, as appropriate.  */
6 long long endianness_test = 1;
7 #define MSW (*(int*)&endianness_test)
8
9 int
10 signbit(double x)
11 {
12   __extension__ union { double d; int i[2]; } u = { d: x };
13   return u.i[MSW] < 0;
14 }
15     
16 int main(void)
17 {
18   if (2*sizeof(int) != sizeof(double) || u.i[MSW] >= 0)
19     exit(0);
20
21   if (!signbit(-0.25))
22     abort();
23
24   exit(0);
25 }