2007-02-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / 20001013-1.c
blob371672cab759051465c9cd1b7e7dd085ea4d5bf5
1 /* { dg-do run { target sparc*-*-* } } */
2 /* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
4 extern void abort (void);
5 extern void exit (int);
7 int l;
9 int baz (double x)
11 return l == 0;
14 double bar (double x)
16 return 1.0;
19 double foo (double x)
21 if (l == -1 || baz (x)) return x;
22 if (x < 0.0)
23 return bar (x);
24 else
25 return 0.0;
28 union {
29 double d;
30 long long l;
31 } x = { l: 0x7ff8000000000000LL }, y;
33 main ()
35 unsigned int fsr = 0;
36 __asm __volatile ("ld %0, %%fsr" : : "m" (fsr));
37 y.d = foo (x.d);
38 __asm __volatile ("st %%fsr, %0" : "=m" (fsr));
39 if (x.l != y.l || (fsr & 0x3ff))
40 abort ();
41 exit (0);