From fd969c7c33a8afc22d246bffe29dd18a51a9de4d Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Fri, 16 Mar 2001 12:34:13 +0000 Subject: [PATCH] sh.c (sh_expand_prologue): Insns that set up the PIC register may be dead. * config/sh/sh.c (sh_expand_prologue): Insns that set up the PIC register may be dead. From-SVN: r40550 --- gcc/ChangeLog | 5 +++++ gcc/config/sh/sh.c | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 755267d9f85..7d3d804e43c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-03-16 Alexandre Oliva + + * config/sh/sh.c (sh_expand_prologue): Insns that set up the PIC + register may be dead. + 2001-03-16 Brad Lucier * Makefile.in (hash.o): Depend on CONFIG_H. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 4385a0fa6e0..f991fe7b14a 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -3987,7 +3987,23 @@ sh_expand_prologue () push_regs (live_regs_mask, live_regs_mask2); if (flag_pic && regs_ever_live[PIC_OFFSET_TABLE_REGNUM]) - emit_insn (gen_GOTaddr2picreg ()); + { + rtx insn = get_last_insn (); + rtx last = emit_insn (gen_GOTaddr2picreg ()); + + /* Mark these insns as possibly dead. Sometimes, flow2 may + delete all uses of the PIC register. In this case, let it + delete the initialization too. */ + do + { + insn = NEXT_INSN (insn); + + REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, + const0_rtx, + REG_NOTES (insn)); + } + while (insn != last); + } if (target_flags != save_flags) { -- 2.30.2