summaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-09-11 10:41:27 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2019-09-11 10:41:27 +0000
commit0a237a94c206b53eb73baad2d75fbcca518df65e (patch)
tree8dfd7a8f5c6dc824fb59632ad688516eeb8cebff /gcc/rtlanal.c
parent26d815a3e587ac04dbd63eec3fb5aecb04db7242 (diff)
re PR rtl-optimization/89795 (wrong code with -O2 -fno-dce -fno-forward-propagate -fno-sched-pressure)
PR rtl-optimization/89795 * rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set. From-SVN: r275635
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 1fbbeda88b2..3a72db7572d 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -4819,7 +4819,7 @@ nonzero_bits1 (const_rtx x, scalar_int_mode mode, const_rtx known_x,
|| ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
? val_signbit_known_set_p (inner_mode, nonzero)
: extend_op != ZERO_EXTEND)
- || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x))))
+ || !MEM_P (SUBREG_REG (x)))
&& xmode_width > inner_width)
nonzero
|= (GET_MODE_MASK (GET_MODE (x)) & ~GET_MODE_MASK (inner_mode));