summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2019-02-14 18:46:18 +0000
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2019-02-14 18:46:18 +0000
commitc43292b92e1f5e8de4e5e05684009abd5ef682bf (patch)
tree3818b76d8866d6a99b24fde794e850e2b0bb6e93
parent727dbee375185764b5de4575739bea818942bc70 (diff)
Backport from trunk
2018-07-26 Segher Boessenkool <segher@kernel.crashing.org> PR rtl-optimization/85805 * combine.c (reg_nonzero_bits_for_combine): Only use the last set value for hard registers if that was written in the same mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@268888 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/combine.c3
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d64117356e4a..d4f632d8c456 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2019-02-14 Segher Boessenkool <segher@kernel.crashing.org>
+
+ Backport from trunk
+ 2018-07-26 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR rtl-optimization/85805
+ * combine.c (reg_nonzero_bits_for_combine): Only use the last set
+ value for hard registers if that was written in the same mode.
+
2019-02-14 Martin Liska <mliska@suse.cz>
Backport from mainline
diff --git a/gcc/combine.c b/gcc/combine.c
index 1b81df4d372f..b72f0f548623 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -10179,7 +10179,8 @@ reg_nonzero_bits_for_combine (const_rtx x, scalar_int_mode xmode,
rsp = &reg_stat[REGNO (x)];
if (rsp->last_set_value != 0
&& (rsp->last_set_mode == mode
- || (GET_MODE_CLASS (rsp->last_set_mode) == MODE_INT
+ || (REGNO (x) >= FIRST_PSEUDO_REGISTER
+ && GET_MODE_CLASS (rsp->last_set_mode) == MODE_INT
&& GET_MODE_CLASS (mode) == MODE_INT))
&& ((rsp->last_set_label >= label_tick_ebb_start
&& rsp->last_set_label < label_tick)