aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.com>2016-02-15 12:06:44 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2016-02-15 12:06:44 +0000
commit53250f44c0f26227b95304dab5bf3261f0f4404f (patch)
treeae1aeb8343b7632bb541ef5282eb22b2a0f38390 /gcc
parent07b383317d572118690c82d58da9536b1ed44a72 (diff)
downloadgcc-53250f44c0f26227b95304dab5bf3261f0f4404f.zip
gcc-53250f44c0f26227b95304dab5bf3261f0f4404f.tar.gz
gcc-53250f44c0f26227b95304dab5bf3261f0f4404f.tar.bz2
Avoid removing sets of a pseudo PIC register in LRA.
PR rtl-optimization/69648 * lra-constraints.c (update_ebb_live_info): Don't remove sets of pic_offset_table_rtx. From-SVN: r233424
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/lra-constraints.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a50c207..61118d2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2016-02-15 Bernd Schmidt <bschmidt@redhat.com>
+ PR rtl-optimization/69648
+ * lra-constraints.c (update_ebb_live_info): Don't remove sets of
+ pic_offset_table_rtx.
+
PR rtl-optimization/69752
* ira.c (update_equiv_regs): When looking for more than a single SET,
also take other side effects into account.
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 17b58bd..f33f8c5 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -5178,8 +5178,10 @@ update_ebb_live_info (rtx_insn *head, rtx_insn *tail)
curr_id = lra_get_insn_recog_data (curr_insn);
curr_static_id = curr_id->insn_static_data;
remove_p = false;
- if ((set = single_set (curr_insn)) != NULL_RTX && REG_P (SET_DEST (set))
+ if ((set = single_set (curr_insn)) != NULL_RTX
+ && REG_P (SET_DEST (set))
&& (regno = REGNO (SET_DEST (set))) >= FIRST_PSEUDO_REGISTER
+ && SET_DEST (set) != pic_offset_table_rtx
&& bitmap_bit_p (&check_only_regs, regno)
&& ! bitmap_bit_p (&live_regs, regno))
remove_p = true;