aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-07-06 14:21:40 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-07-06 14:21:40 -0700
commit5c0e109149d0b7cfef1c159d3e50f971095ca507 (patch)
tree26576ee75f298d4b0a619dc248f47e24da90bf2f
parenta5e9b1248cd7f666bf8141c6ce75f6cb3e7aa578 (diff)
downloadgcc-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.c5
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))