Commit c862d589 by James E Wilson Committed by Jim Wilson

re PR c/13133 (Extraneous register-saves triggered by setjmp())

PR c/13133
* reload1.c (reload): Delete special handling for setjmp.

From-SVN: r73791
parent 0eadf440
2003-11-20 James E Wilson <wilson@specifixinc.com>
PR c/13133
* reload1.c (reload): Delete special handling for setjmp.
2003-11-21 Andreas Tobler <a.tobler@schweiz.ch> 2003-11-21 Andreas Tobler <a.tobler@schweiz.ch>
* mklibgcc.in: Evaluate shlib_slibdir_qual during link * mklibgcc.in: Evaluate shlib_slibdir_qual during link
......
...@@ -698,9 +698,7 @@ reload (rtx first, int global) ...@@ -698,9 +698,7 @@ reload (rtx first, int global)
/* Look for REG_EQUIV notes; record what each pseudo is equivalent to. /* Look for REG_EQUIV notes; record what each pseudo is equivalent to.
Also find all paradoxical subregs and find largest such for each pseudo. Also find all paradoxical subregs and find largest such for each pseudo.
On machines with small register classes, record hard registers that On machines with small register classes, record hard registers that
are used for user variables. These can never be used for spills. are used for user variables. These can never be used for spills. */
Also look for a "constant" REG_SETJMP. This means that all
caller-saved registers must be marked live. */
num_eliminable_invariants = 0; num_eliminable_invariants = 0;
for (insn = first; insn; insn = NEXT_INSN (insn)) for (insn = first; insn; insn = NEXT_INSN (insn))
...@@ -714,12 +712,6 @@ reload (rtx first, int global) ...@@ -714,12 +712,6 @@ reload (rtx first, int global)
&& GET_MODE (insn) != VOIDmode) && GET_MODE (insn) != VOIDmode)
PUT_MODE (insn, VOIDmode); PUT_MODE (insn, VOIDmode);
if (GET_CODE (insn) == CALL_INSN
&& find_reg_note (insn, REG_SETJMP, NULL))
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (! call_used_regs[i])
regs_ever_live[i] = 1;
if (set != 0 && GET_CODE (SET_DEST (set)) == REG) if (set != 0 && GET_CODE (SET_DEST (set)) == REG)
{ {
rtx note = find_reg_note (insn, REG_EQUIV, NULL_RTX); rtx note = find_reg_note (insn, REG_EQUIV, NULL_RTX);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment