OSDN Git Service

* Makefile.in (local-distclean): Remove leftover built files.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / 20001013-1.c
1 /* { dg-do run { target sparc*-*-* } } */
2 /* { dg-options "-O2 -mvis" } */
3
4 int l;
5
6 int baz (double x)
7 {
8   return l == 0;
9 }
10
11 double bar (double x)
12 {
13   return 1.0;
14 }
15
16 double foo (double x)
17 {
18   if (l == -1 || baz (x)) return x;
19   if (x < 0.0)
20     return bar (x);
21   else
22     return 0.0;
23 }
24
25 union {
26   double d;
27   long long l;
28 } x = { l: 0x7ff8000000000000LL }, y;
29
30 main ()
31 {
32   unsigned int fsr = 0;
33   __asm __volatile ("ld %0, %%fsr" : : "m" (fsr));
34   y.d = foo (x.d);
35   __asm __volatile ("st %%fsr, %0" : "=m" (fsr));
36   if (x.l != y.l || (fsr & 0x3ff))
37     abort ();
38   exit (0);
39 }