From 53250f44c0f26227b95304dab5bf3261f0f4404f Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Mon, 15 Feb 2016 12:06:44 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/lra-constraints.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a50c2075759..61118d222ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2016-02-15 Bernd Schmidt + 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 17b58bdfc3d..f33f8c54876 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; -- 2.30.2