diff options
author | Jakub Jelinek <jakub@redhat.com> | 2003-05-19 14:15:33 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2003-05-19 14:15:33 +0200 |
commit | b041fbe6137dd6b420fb869d17c6e7e4baaa7e55 (patch) | |
tree | e9c0b397608d0b31fc89152a176a0cc9d12e3dbe /gcc | |
parent | a1447166965c4f0dade2b1d67dfdfdcb22ea5270 (diff) | |
download | gcc-b041fbe6137dd6b420fb869d17c6e7e4baaa7e55.zip gcc-b041fbe6137dd6b420fb869d17c6e7e4baaa7e55.tar.gz gcc-b041fbe6137dd6b420fb869d17c6e7e4baaa7e55.tar.bz2 |
* gcc.dg/20030225-2.c: New test.
From-SVN: r66962
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20030225-2.c | 43 |
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9d036cc..6361f62 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-05-19 Jakub Jelinek <jakub@redhat.com> + + * gcc.dg/20030225-2.c: New test. + 2003-05-18 Roger Sayle <roger@eyesopen.com> Kaveh R. Ghazi <ghazi@caip.rutgers.edu> diff --git a/gcc/testsuite/gcc.dg/20030225-2.c b/gcc/testsuite/gcc.dg/20030225-2.c new file mode 100644 index 0000000..a21660d --- /dev/null +++ b/gcc/testsuite/gcc.dg/20030225-2.c @@ -0,0 +1,43 @@ +/* { dg-do run { target ia64-*-linux* } } */ +/* { dg-options "-O3" } */ + +int __attribute__((noinline, const)) +ret4 (float value) +{ + return 4; +} + +int __attribute__((noinline, const)) +ret0 (float value) +{ + return 0; +} + +float __attribute__((noinline)) +test (float x, float y) +{ + int clsx = ret4 (x); + int clsy = ret0 (y); + + if (clsx == 0 || clsy == 0 + || (y < 0 && clsx == 1 && clsy == 1)) + return x - y; + + return x < y ? 0 : x - y; +} + +float a = 0.0, b; + +int main (void) +{ + unsigned long e; + b = a / a; + __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (e)); + e &= ~0x7e000UL; + __asm__ __volatile__ ("mov.m ar.fpsr=%0" :: "r" (e) : "memory"); + a = test (0, b); + __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (e)); + if (e & 0x2000) + abort (); + exit (0); +} |