Commit 6ce7e0f9 by J"orn Rennecke Committed by Joern Rennecke

reload1.c (reload_combine_note_use): Handle return register USEs.

	* reload1.c (reload_combine_note_use): Handle return register USEs.
	REG case: Handle multi-hard-register hard regs.

From-SVN: r32310
parent 661cb0b7
Fri Mar 3 12:49:28 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
* reload1.c (reload_combine_note_use): Handle return register USEs.
REG case: Handle multi-hard-register hard regs.
Fri Mar 3 07:38:34 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> Fri Mar 3 07:38:34 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* md.texi: Document use of '*' in insn pattern name. * md.texi: Document use of '*' in insn pattern name.
......
...@@ -9253,6 +9253,21 @@ reload_combine_note_use (xp, insn) ...@@ -9253,6 +9253,21 @@ reload_combine_note_use (xp, insn)
} }
break; break;
case USE:
/* If this is the USE of a return value, we can't change it. */
if (GET_CODE (XEXP (x, 0)) == REG && REG_FUNCTION_VALUE_P (XEXP (x, 0)))
{
/* Mark the return register as used in an unknown fashion. */
rtx reg = XEXP (x, 0);
int regno = REGNO (reg);
int nregs = HARD_REGNO_NREGS (regno, GET_MODE (reg));
while (--nregs >= 0)
reg_state[regno + nregs].use_index = -1;
return;
}
break;
case CLOBBER: case CLOBBER:
if (GET_CODE (SET_DEST (x)) == REG) if (GET_CODE (SET_DEST (x)) == REG)
return; return;
...@@ -9269,12 +9284,23 @@ reload_combine_note_use (xp, insn) ...@@ -9269,12 +9284,23 @@ reload_combine_note_use (xp, insn)
{ {
int regno = REGNO (x); int regno = REGNO (x);
int use_index; int use_index;
int nregs;
/* Some spurious USEs of pseudo registers might remain. /* Some spurious USEs of pseudo registers might remain.
Just ignore them. */ Just ignore them. */
if (regno >= FIRST_PSEUDO_REGISTER) if (regno >= FIRST_PSEUDO_REGISTER)
return; return;
nregs = HARD_REGNO_NREGS (regno, GET_MODE (x));
/* We can't substitute into multi-hard-reg uses. */
if (nregs > 1)
{
while (--nregs >= 0)
reg_state[regno + nregs].use_index = -1;
return;
}
/* If this register is already used in some unknown fashion, we /* If this register is already used in some unknown fashion, we
can't do anything. can't do anything.
If we decrement the index from zero to -1, we can't store more If we decrement the index from zero to -1, we can't store more
......
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