diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-08-28 05:41:44 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-08-27 23:41:44 -0600 |
commit | 4741f6ad9a7902744e4953becc3ff5d55461d914 (patch) | |
tree | c44b1ad675dbae1b4038cef72adb99304cf247e9 /gcc/cse.c | |
parent | 5f9ee6953e441cdd6cc0d85229f85c34abb4fd11 (diff) | |
download | gcc-4741f6ad9a7902744e4953becc3ff5d55461d914.zip gcc-4741f6ad9a7902744e4953becc3ff5d55461d914.tar.gz gcc-4741f6ad9a7902744e4953becc3ff5d55461d914.tar.bz2 |
* cse.c (fold_rtx): Work around bug in Sun V5.0 compilers.
From-SVN: r28941
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -5802,7 +5802,14 @@ fold_rtx (x, insn) hence not save anything) or be incorrect. */ if (const_arg1 != 0 && GET_CODE (const_arg1) == CONST_INT && INTVAL (const_arg1) < 0 - && - INTVAL (const_arg1) >= 0 + /* This used to test + + - INTVAL (const_arg1) >= 0 + + But The Sun V5.0 compilers mis-compiled that test. So + instead we test for the problematic value in a more direct + manner and hope the Sun compilers get it correct. */ + && INTVAL (const_arg1) != (1 << (HOST_BITS_PER_WIDE_INT - 1)) && GET_CODE (folded_arg1) == REG) { rtx new_const = GEN_INT (- INTVAL (const_arg1)); |