summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2018-01-23 20:54:32 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2018-01-23 20:54:32 +0000
commit4d28913a860579d645b24591fb300b4d8dd3cd55 (patch)
tree321693d5851e8f10304fba0232edbcd3629fbb75
parent2443174bc2820b1a72c66b4058842cb145545394 (diff)
PR rtl-optimization/81443
* rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results from inner REGs to paradoxical SUBREGs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256998 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/rtlanal.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 336dda8c45d8..39d733b51a90 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR rtl-optimization/81443
+ * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
+ from inner REGs to paradoxical SUBREGs.
+
2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 8e85f14525dc..772a6a993bb0 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -4976,7 +4976,7 @@ num_sign_bit_copies1 (const_rtx x, machine_mode mode, const_rtx known_x,
if (WORD_REGISTER_OPERATIONS
&& load_extend_op (inner_mode) == SIGN_EXTEND
&& paradoxical_subreg_p (x)
- && (MEM_P (SUBREG_REG (x)) || REG_P (SUBREG_REG (x))))
+ && MEM_P (SUBREG_REG (x)))
return cached_num_sign_bit_copies (SUBREG_REG (x), mode,
known_x, known_mode, known_ret);
break;