aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-11-20 08:59:30 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2018-11-20 08:59:30 +0000
commit643427d70f7a547a1db8a8492a6a124ff22c0d3a (patch)
treee254592484859d6e99362a4041f1d06658035748 /gcc/combine.c
parent07b9f1de1ea532a66d8ac103f3a9827521d780f9 (diff)
downloadgcc-643427d70f7a547a1db8a8492a6a124ff22c0d3a.zip
gcc-643427d70f7a547a1db8a8492a6a124ff22c0d3a.tar.gz
gcc-643427d70f7a547a1db8a8492a6a124ff22c0d3a.tar.bz2
re PR rtl-optimization/85925 (compilation of masking with 257 goes wrong in combine at -02)
PR rtl-optimization/85925 * rtl.h (word_register_operation_p): New predicate. * combine.c (record_dead_and_set_regs_1): Only apply specific handling for WORD_REGISTER_OPERATIONS targets to word_register_operation_p RTX. * rtlanal.c (nonzero_bits1): Likewise. Adjust couple of comments. (num_sign_bit_copies1): Likewise. From-SVN: r266302
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 945eca3..ecc83f8 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -13331,6 +13331,7 @@ record_dead_and_set_regs_1 (rtx dest, const_rtx setter, void *data)
&& subreg_lowpart_p (SET_DEST (setter)))
record_value_for_reg (dest, record_dead_insn,
WORD_REGISTER_OPERATIONS
+ && word_register_operation_p (SET_SRC (setter))
&& paradoxical_subreg_p (SET_DEST (setter))
? SET_SRC (setter)
: gen_lowpart (GET_MODE (dest),