diff options
| author | fjahanian <fjahanian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-10 19:06:53 +0000 |
|---|---|---|
| committer | fjahanian <fjahanian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-10 19:06:53 +0000 |
| commit | a7157f1d6f85bb478946dc409c8ce5d7876bca4e (patch) | |
| tree | 2e465d717b7fafa9bb2c9c26fa31192afb0f5a54 | |
| parent | 696f98d4c129e317174b5e1d2bfbf944b0080445 (diff) | |
| download | ppe42-gcc-a7157f1d6f85bb478946dc409c8ce5d7876bca4e.tar.gz ppe42-gcc-a7157f1d6f85bb478946dc409c8ce5d7876bca4e.zip | |
Test for PR tree-optimization/17892.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90447 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c b/gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c new file mode 100644 index 00000000000..c15653cd2e1 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/unsafe-fp-assoc-1.c @@ -0,0 +1,37 @@ +extern void abort(); + +typedef union { + struct { + unsigned int hi; + unsigned int lo; + } i; + double d; +} hexdouble; + +static const double twoTo52 = 0x1.0p+52; + +void func ( double x ) +{ + hexdouble argument; + register double y, z; + unsigned int xHead; + argument.d = x; + xHead = argument.i.hi & 0x7fffffff; + if (__builtin_expect(!!(xHead < 0x43300000u), 1)) + { + y = ( x - twoTo52 ) + twoTo52; + if ( y != x ) + abort(); + z = x - 0.5; + y = ( z - twoTo52 ) + twoTo52; + if ( y == (( x - twoTo52 ) + twoTo52) ) + abort(); + } + return; +} + +int main() +{ + func((double)1.00); + return 0; +} |

