From 3462dc4515c41c0eaa075629897e84660da0a406 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 10 Jan 1992 22:09:10 -0500 Subject: [PATCH] *** empty log message *** From-SVN: r176 --- gcc/genemit.c | 5 +++-- gcc/reorg.c | 14 +++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/gcc/genemit.c b/gcc/genemit.c index 86ed20d..2f4d856 100644 --- a/gcc/genemit.c +++ b/gcc/genemit.c @@ -459,9 +459,10 @@ gen_split (split) int operands; 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) - 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. */ diff --git a/gcc/reorg.c b/gcc/reorg.c index 142081a..46f1ada 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -303,8 +303,8 @@ mark_referenced_resources (x, res, include_called_routine) if (include_called_routine) { /* A CALL references memory, the frame pointer if it exists, the - stack pointer, and any registers given in USE insns immediately - in front of the CALL. + stack pointer, any global registers and any registers given in + USE insns immediately in front of the CALL. 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 @@ -328,6 +328,10 @@ mark_referenced_resources (x, res, include_called_routine) if (frame_pointer_needed) 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. */ while (GET_CODE (insn) == CODE_LABEL) insn = PREV_INSN (insn); @@ -403,8 +407,8 @@ mark_set_resources (insn, res, include_called_routine) case CALL_INSN: /* Called routine modifies the condition code, memory, any registers - that aren't saved across calls, and anything explicitly CLOBBERed - immediately after the CALL_INSN. */ + that aren't saved across calls, global registers and anything + explicitly CLOBBERed immediately after the CALL_INSN. */ if (include_called_routine) { @@ -412,7 +416,7 @@ mark_set_resources (insn, res, include_called_routine) res->cc = res->memory = 1; 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); /* Skip any possible labels between the CALL_INSN and CLOBBERs. */ -- 2.7.4