diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c81e4f5552..0acd815b35c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-05-09 Segher Boessenkool + + PR rtl-optimization/85645 + * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET + in the REG_CFA_REGISTER note for LR, don't leave it empty. + 2018-05-09 Segher Boessenkool PR rtl-optimization/85645 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6fb79f29a62..19913da9584 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -26151,10 +26151,11 @@ rs6000_emit_prologue_components (sbitmap components) /* Prologue for LR. */ if (bitmap_bit_p (components, 0)) { + rtx lr = gen_rtx_REG (reg_mode, LR_REGNO); rtx reg = gen_rtx_REG (reg_mode, 0); - rtx_insn *insn = emit_move_insn (reg, gen_rtx_REG (reg_mode, LR_REGNO)); + rtx_insn *insn = emit_move_insn (reg, lr); RTX_FRAME_RELATED_P (insn) = 1; - add_reg_note (insn, REG_CFA_REGISTER, NULL); + add_reg_note (insn, REG_CFA_REGISTER, gen_rtx_SET (reg, lr)); int offset = info->lr_save_offset; if (info->push_p) @@ -26162,7 +26163,6 @@ rs6000_emit_prologue_components (sbitmap components) insn = emit_insn (gen_frame_store (reg, ptr_reg, offset)); RTX_FRAME_RELATED_P (insn) = 1; - rtx lr = gen_rtx_REG (reg_mode, LR_REGNO); rtx mem = copy_rtx (SET_DEST (single_set (insn))); add_reg_note (insn, REG_CFA_OFFSET, gen_rtx_SET (mem, lr)); }