diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2007-07-18 17:42:12 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2007-07-18 17:42:12 +0000 |
commit | 0c8d3c2b0852bf0eca1413c311fc3d2a9d3c1ade (patch) | |
tree | 25f7979650149bcd55f9e00ab15c292b6ca66e36 /gcc/testsuite | |
parent | 7faa1bbb5d0206cc83f20c1145f612f7754fdcf3 (diff) | |
download | gcc-0c8d3c2b0852bf0eca1413c311fc3d2a9d3c1ade.zip gcc-0c8d3c2b0852bf0eca1413c311fc3d2a9d3c1ade.tar.gz gcc-0c8d3c2b0852bf0eca1413c311fc3d2a9d3c1ade.tar.bz2 |
re PR target/30652 (SSE expansion is missing for isinf() and other fpclassify functions)
PR target/30652
* builtins.c (expand_builtin_interclass_mathfn): Allow for missing
optabs infrastructure. Provide generic implementation for
FINITE/ISFINITE.
(expand_builtin): Handle FINITE/ISFINITE.
(fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
(fold_builtin_1): Likewise.
* builtins.def (BUILT_IN_ISFINITE): New.
* doc/extend.texi: Document isfinite.
testsuite:
* gcc.dg/pr28796-1.c: Add more cases.
* gcc.dg/pr28796-2.c: Likewise.
From-SVN: r126725
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr28796-1.c | 14 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr28796-2.c | 13 |
3 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1c48519..64a5d01 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,11 @@ * gcc.dg/pr28796-1.c: Add more cases. * gcc.dg/pr28796-2.c: Likewise. +2007-07-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gcc.dg/pr28796-1.c: Add more cases. + * gcc.dg/pr28796-2.c: Likewise. + 2007-07-17 Janus Weil <jaydub66@gmail.com> PR fortran/32535 diff --git a/gcc/testsuite/gcc.dg/pr28796-1.c b/gcc/testsuite/gcc.dg/pr28796-1.c index d200b1a..077118a 100644 --- a/gcc/testsuite/gcc.dg/pr28796-1.c +++ b/gcc/testsuite/gcc.dg/pr28796-1.c @@ -38,6 +38,20 @@ int main() if (__builtin_finitel (ld) != 1) link_error (); + if (__builtin_isinf (f) != 0) + link_error (); + if (__builtin_isinf (d) != 0) + link_error (); + if (__builtin_isinf (ld) != 0) + link_error (); + + if (__builtin_isfinite (f) != 1) + link_error (); + if (__builtin_isfinite (d) != 1) + link_error (); + if (__builtin_isfinite (ld) != 1) + link_error (); + if (f != f) link_error (); if (d != d) diff --git a/gcc/testsuite/gcc.dg/pr28796-2.c b/gcc/testsuite/gcc.dg/pr28796-2.c index 2545484..6f929a8 100644 --- a/gcc/testsuite/gcc.dg/pr28796-2.c +++ b/gcc/testsuite/gcc.dg/pr28796-2.c @@ -43,10 +43,23 @@ foo_1 (float f, double d, long double ld, if (__builtin_isinfl (ld) != res_isinf) abort (); + if (__builtin_isfinite (f) != res_isfin) + abort (); + if (__builtin_isfinite (d) != res_isfin) + abort (); + if (__builtin_isfinite (ld) != res_isfin) + abort (); + + if (__builtin_finitef (f) != res_isfin) + abort (); if (__builtin_finite (f) != res_isfin) abort (); if (__builtin_finite (d) != res_isfin) abort (); + if (__builtin_finitel (d) != res_isfin) + abort (); + if (__builtin_finitel (ld) != res_isfin) + abort (); } void __attribute__ ((__noinline__)) |