diff options
author | Roger Sayle <roger@eyesopen.com> | 2003-05-23 03:46:53 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2003-05-23 03:46:53 +0000 |
commit | 18c2511ccbc14dc2899b0fb6ec60935ac87087c2 (patch) | |
tree | 5b38df8d0da0fa5e04c432815e2f600b41d5f2e5 /gcc/testsuite | |
parent | a8e097d6db75fdb7fb530bd571647a656376fe97 (diff) | |
download | gcc-18c2511ccbc14dc2899b0fb6ec60935ac87087c2.zip gcc-18c2511ccbc14dc2899b0fb6ec60935ac87087c2.tar.gz gcc-18c2511ccbc14dc2899b0fb6ec60935ac87087c2.tar.bz2 |
real.c (real_maxval): New function to return the largest finite value representable in a given mode (i.e.
* real.c (real_maxval): New function to return the largest finite
value representable in a given mode (i.e. FLT_MAX and DBL_MAX).
* real.h (real_maxval): Prototype here.
* fold-const.c (fold_inf_compare): Transform comparisons against
+-Infinity into comparisons against DBL_MAX (or equivalent).
* gcc.c-torture/execute/ieee/inf-2.c: New test case.
From-SVN: r67112
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c | 79 |
2 files changed, 83 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c3b456e..6774aea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-05-22 Roger Sayle <roger@eyesopen.com> + + * gcc.c-torture/execute/ieee/inf-2.c: New test case. + 2003-05-21 Janis Johnson <janis187@us.ibm.com> * gcc.dg/compat/scalar-return-1_main.c: New file. diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c b/gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c new file mode 100644 index 0000000..40270c0 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c @@ -0,0 +1,79 @@ +extern void abort (void); + +void test(double f, double i) +{ + if (f == __builtin_inf()) + abort (); + if (f == -__builtin_inf()) + abort (); + if (i == -__builtin_inf()) + abort (); + if (i != __builtin_inf()) + abort (); + + if (f >= __builtin_inf()) + abort (); + if (f > __builtin_inf()) + abort (); + if (i > __builtin_inf()) + abort (); + if (f <= -__builtin_inf()) + abort (); + if (f < -__builtin_inf()) + abort (); +} + +void testf(float f, float i) +{ + if (f == __builtin_inff()) + abort (); + if (f == -__builtin_inff()) + abort (); + if (i == -__builtin_inff()) + abort (); + if (i != __builtin_inff()) + abort (); + + if (f >= __builtin_inff()) + abort (); + if (f > __builtin_inff()) + abort (); + if (i > __builtin_inff()) + abort (); + if (f <= -__builtin_inff()) + abort (); + if (f < -__builtin_inff()) + abort (); +} + +void testl(long double f, long double i) +{ + if (f == __builtin_infl()) + abort (); + if (f == -__builtin_infl()) + abort (); + if (i == -__builtin_infl()) + abort (); + if (i != __builtin_infl()) + abort (); + + if (f >= __builtin_infl()) + abort (); + if (f > __builtin_infl()) + abort (); + if (i > __builtin_infl()) + abort (); + if (f <= -__builtin_infl()) + abort (); + if (f < -__builtin_infl()) + abort (); +} + +int main() +{ + test (34.0, __builtin_inf()); + testf (34.0f, __builtin_inff()); + testf (34.0l, __builtin_infl()); + return 0; +} + |