diff options
author | Bernd Schmidt <bernds@redhat.com> | 2016-02-15 12:06:44 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2016-02-15 12:06:44 +0000 |
commit | 53250f44c0f26227b95304dab5bf3261f0f4404f (patch) | |
tree | ae1aeb8343b7632bb541ef5282eb22b2a0f38390 /gcc | |
parent | 07b383317d572118690c82d58da9536b1ed44a72 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/lra-constraints.c | 4 |
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; |