aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-02-25 06:55:11 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-02-25 06:55:11 -0500
commita9c6464d87cc4ddcd1adff1d030caf91ad974753 (patch)
treec687e075676a041a280cd1a81add9bedecab55e5
parent7a96832ab0f1a65a968c8dd8766eb359f5a4c80e (diff)
downloadgcc-a9c6464d87cc4ddcd1adff1d030caf91ad974753.zip
gcc-a9c6464d87cc4ddcd1adff1d030caf91ad974753.tar.gz
gcc-a9c6464d87cc4ddcd1adff1d030caf91ad974753.tar.bz2
(simplify_unary_operation): If operand mode is VOIDmode for
UNSIGNED_FLOAT and operand looks negative, can't simplify. From-SVN: r9081
-rw-r--r--gcc/cse.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index bcec8cd..9cbc0c2 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -2972,7 +2972,14 @@ simplify_unary_operation (code, mode, op, op_mode)
else
lv = CONST_DOUBLE_LOW (op), hv = CONST_DOUBLE_HIGH (op);
- if (GET_MODE_BITSIZE (op_mode) >= HOST_BITS_PER_WIDE_INT * 2)
+ if (op_mode == VOIDmode)
+ {
+ /* We don't know how to interpret negative-looking numbers in
+ this case, so don't try to fold those. */
+ if (hv < 0)
+ return 0;
+ }
+ else if (GET_MODE_BITSIZE (op_mode) >= HOST_BITS_PER_WIDE_INT * 2)
;
else
hv = 0, lv &= GET_MODE_MASK (op_mode);