Commit 3462dc45 by Richard Kenner

*** empty log message ***

From-SVN: r176
parent 68e9eb95
...@@ -459,9 +459,10 @@ gen_split (split) ...@@ -459,9 +459,10 @@ gen_split (split)
int operands; int operands;
if (XVEC (split, 0) == 0) if (XVEC (split, 0) == 0)
fatal ("define_split %d lacks a pattern", insn_index_number); fatal ("define_split (definition %d) lacks a pattern", insn_index_number);
else if (XVEC (split, 2) == 0) else if (XVEC (split, 2) == 0)
fatal ("define_split %d lacks a replacement pattern", insn_index_number); fatal ("define_split (definition %d) lacks a replacement pattern",
insn_index_number);
/* Find out how many operands this function has. */ /* Find out how many operands this function has. */
......
...@@ -303,8 +303,8 @@ mark_referenced_resources (x, res, include_called_routine) ...@@ -303,8 +303,8 @@ mark_referenced_resources (x, res, include_called_routine)
if (include_called_routine) if (include_called_routine)
{ {
/* A CALL references memory, the frame pointer if it exists, the /* A CALL references memory, the frame pointer if it exists, the
stack pointer, and any registers given in USE insns immediately stack pointer, any global registers and any registers given in
in front of the CALL. USE insns immediately in front of the CALL.
However, we may have moved some of the parameter loading insns However, we may have moved some of the parameter loading insns
into the delay slot of this CALL. If so, the USE's for them into the delay slot of this CALL. If so, the USE's for them
...@@ -328,6 +328,10 @@ mark_referenced_resources (x, res, include_called_routine) ...@@ -328,6 +328,10 @@ mark_referenced_resources (x, res, include_called_routine)
if (frame_pointer_needed) if (frame_pointer_needed)
SET_HARD_REG_BIT (res->regs, FRAME_POINTER_REGNUM); SET_HARD_REG_BIT (res->regs, FRAME_POINTER_REGNUM);
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (global_regs[i])
SET_HARD_REG_BIT (res->regs, i);
/* Skip any labels between the CALL_INSN and possible USE insns. */ /* Skip any labels between the CALL_INSN and possible USE insns. */
while (GET_CODE (insn) == CODE_LABEL) while (GET_CODE (insn) == CODE_LABEL)
insn = PREV_INSN (insn); insn = PREV_INSN (insn);
...@@ -403,8 +407,8 @@ mark_set_resources (insn, res, include_called_routine) ...@@ -403,8 +407,8 @@ mark_set_resources (insn, res, include_called_routine)
case CALL_INSN: case CALL_INSN:
/* Called routine modifies the condition code, memory, any registers /* Called routine modifies the condition code, memory, any registers
that aren't saved across calls, and anything explicitly CLOBBERed that aren't saved across calls, global registers and anything
immediately after the CALL_INSN. */ explicitly CLOBBERed immediately after the CALL_INSN. */
if (include_called_routine) if (include_called_routine)
{ {
...@@ -412,7 +416,7 @@ mark_set_resources (insn, res, include_called_routine) ...@@ -412,7 +416,7 @@ mark_set_resources (insn, res, include_called_routine)
res->cc = res->memory = 1; res->cc = res->memory = 1;
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
if (call_used_regs[i]) if (call_used_regs[i] || global_regs[i])
SET_HARD_REG_BIT (res->regs, i); SET_HARD_REG_BIT (res->regs, i);
/* Skip any possible labels between the CALL_INSN and CLOBBERs. */ /* Skip any possible labels between the CALL_INSN and CLOBBERs. */
......
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