Update ChangeLog and version files for release
[official-gcc.git] / gcc / testsuite / gcc.target / sparc / 20001013-1.c
blobd47c7ff17572644b813342ba2ee3e01deca9ea79
1 /* { dg-do run } */
2 /* { dg-require-effective-target ultrasparc_hw } */
3 /* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
5 extern void abort (void);
6 extern void exit (int);
8 int l;
10 int baz (double x)
12 return l == 0;
15 double bar (double x)
17 return 1.0;
20 double foo (double x)
22 if (l == -1 || baz (x)) return x;
23 if (x < 0.0)
24 return bar (x);
25 else
26 return 0.0;
29 union {
30 double d;
31 long long l;
32 } x = { l: 0x7ff8000000000000LL }, y;
34 int main ()
36 unsigned int fsr = 0;
37 __asm __volatile ("ld %0, %%fsr" : : "m" (fsr));
38 y.d = foo (x.d);
39 __asm __volatile ("st %%fsr, %0" : "=m" (fsr));
40 if (x.l != y.l || (fsr & 0x3ff))
41 abort ();
42 exit (0);