summaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>2000-12-12 13:23:04 -0800
committerJim Wilson <wilson@gcc.gnu.org>2000-12-12 13:23:04 -0800
commit734508eae57528457d34df6762c38ded3843bfa5 (patch)
tree1c83248ee4b0f3902f9acfb00de3cf4189a1bc8b /gcc/rtlanal.c
parentf2beb7ef551e6d8560f95a1ff2772720716b1697 (diff)
downloadgcc-734508eae57528457d34df6762c38ded3843bfa5.tar.gz
Fix for ia64-linux glibc miscompilation of nan tests.
* rtlanal.c (may_trap_p): Check operand modes of LE, LT, GE, and GT. From-SVN: r38209
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 88b49fe649e..073f37c438c 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -1947,8 +1947,16 @@ may_trap_p (x)
certainly may trap. */
return 1;
+ case GE:
+ case GT:
+ case LE:
+ case LT:
case COMPARE:
- /* Any floating comparison may trap. */
+ /* Some floating point comparisons may trap. */
+ /* ??? There is no machine independent way to check for tests that trap
+ when COMPARE is used, though many targets do make this distinction.
+ For instance, sparc uses CCFPE for compares which generate exceptions
+ and CCFP for compares which do not generate exceptions. */
if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
return 1;
/* But often the compare has some CC mode, so check operand