diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2001-03-16 12:34:13 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2001-03-16 12:34:13 +0000 |
commit | fd969c7c33a8afc22d246bffe29dd18a51a9de4d (patch) | |
tree | 5fe46b49d648adb2793bacef3ccf2b70ddd4f20b | |
parent | 91c251fdff4f796576f836b08fb3fa063189bcf9 (diff) | |
download | gcc-fd969c7c33a8afc22d246bffe29dd18a51a9de4d.zip gcc-fd969c7c33a8afc22d246bffe29dd18a51a9de4d.tar.gz gcc-fd969c7c33a8afc22d246bffe29dd18a51a9de4d.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 755267d..7d3d804 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-03-16 Alexandre Oliva <aoliva@redhat.com> + + * config/sh/sh.c (sh_expand_prologue): Insns that set up the PIC + register may be dead. + 2001-03-16 Brad Lucier <lucier@math.purdue.edu> * Makefile.in (hash.o): Depend on CONFIG_H. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 4385a0f..f991fe7 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) { |