mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-18 21:49:47 +08:00
reload1.c (reload_combine): Take multi-hard-regs into account when processing CALL_INSN_FUNCTION_USAGE.
* reload1.c (reload_combine): Take multi-hard-regs into account when processing CALL_INSN_FUNCTION_USAGE. From-SVN: r38379
This commit is contained in:
parent
3c0b797012
commit
6a69653af2
@ -1,3 +1,8 @@
|
||||
2000-12-19 Catherine Moore <clm@redhat.com>
|
||||
|
||||
* reload1.c (reload_combine): Take multi-hard-regs into account
|
||||
when processing CALL_INSN_FUNCTION_USAGE.
|
||||
|
||||
2000-12-19 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* invoke.texi (-print-search-dirs): Make references to cpp refer
|
||||
|
@ -8651,20 +8651,27 @@ reload_combine ()
|
||||
|
||||
for (link = CALL_INSN_FUNCTION_USAGE (insn); link;
|
||||
link = XEXP (link, 1))
|
||||
if (GET_CODE (XEXP (XEXP (link, 0), 0)) == REG)
|
||||
{
|
||||
unsigned int regno = REGNO (XEXP (XEXP (link, 0), 0));
|
||||
{
|
||||
rtx usage_rtx = XEXP (XEXP (link, 0), 0);
|
||||
if (GET_CODE (usage_rtx) == REG)
|
||||
{
|
||||
int i;
|
||||
unsigned int start_reg = REGNO (usage_rtx);
|
||||
unsigned int num_regs =
|
||||
HARD_REGNO_NREGS (start_reg, GET_MODE (usage_rtx));
|
||||
unsigned int end_reg = start_reg + num_regs - 1;
|
||||
for (i = start_reg; i <= end_reg; i++)
|
||||
if (GET_CODE (XEXP (link, 0)) == CLOBBER)
|
||||
{
|
||||
reg_state[i].use_index = RELOAD_COMBINE_MAX_USES;
|
||||
reg_state[i].store_ruid = reload_combine_ruid;
|
||||
}
|
||||
else
|
||||
reg_state[i].use_index = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (GET_CODE (XEXP (link, 0)) == CLOBBER)
|
||||
{
|
||||
reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
|
||||
reg_state[regno].store_ruid = reload_combine_ruid;
|
||||
}
|
||||
else
|
||||
reg_state[regno].use_index = -1;
|
||||
}
|
||||
}
|
||||
|
||||
else if (GET_CODE (insn) == JUMP_INSN
|
||||
&& GET_CODE (PATTERN (insn)) != RETURN)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user