diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1993-07-06 14:21:40 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1993-07-06 14:21:40 -0700 |
commit | 5c0e109149d0b7cfef1c159d3e50f971095ca507 (patch) | |
tree | 26576ee75f298d4b0a619dc248f47e24da90bf2f | |
parent | a5e9b1248cd7f666bf8141c6ce75f6cb3e7aa578 (diff) | |
download | gcc-5c0e109149d0b7cfef1c159d3e50f971095ca507.zip gcc-5c0e109149d0b7cfef1c159d3e50f971095ca507.tar.gz gcc-5c0e109149d0b7cfef1c159d3e50f971095ca507.tar.bz2 |
(simplify_and_const_int, LSHIFTRT case): Must be at
least as many sign bit copies as bits in mask.
From-SVN: r4868
-rw-r--r-- | gcc/combine.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index b91558a..1c8295f 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -6118,7 +6118,10 @@ simplify_and_const_int (x, mode, varop, constop) + num_sign_bit_copies (XEXP (varop, 0), GET_MODE (XEXP (varop, 0)))) >= GET_MODE_BITSIZE (GET_MODE (varop))) - && exact_log2 (constop + 1) >= 0) + && exact_log2 (constop + 1) >= 0 + && (num_sign_bit_copies (XEXP (varop, 0), + GET_MODE (XEXP (varop, 0))) + >= exact_log2 (constop + 1))) varop = gen_rtx_combine (LSHIFTRT, GET_MODE (varop), XEXP (varop, 0), GEN_INT (GET_MODE_BITSIZE (GET_MODE (varop)) |