This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Reload patch version 3
- To: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Subject: Re: Reload patch version 3
- From: Bernd Schmidt <crux at pool dot informatik dot rwth-aachen dot de>
- Date: Fri, 28 Aug 1998 14:42:54 +0200 (MET DST)
- cc: egcs-patches at cygnus dot com
> FYI, I just tried to bootstrap the egcs release branch on
> powerpc-unknown-linux-gnu (2.1.118/glibc-2.0.95) and it failed during
> stage1 with the following error:
>
> ../../../egcs/gcc/caller-save.c:654: Internal compiler error in function
> insert_save_restore
I fixed a bug that could lead to such a failure this morning. Unfortunately
I haven't brought a diff today, but here's what you have to do: in global.c,
find the following piece of code in the function build_insn_chain:
if (first == basic_block_head[b])
{
int regno;
bzero ((char *)inverse_renumber, sizeof inverse_renumber);
EXECUTE_IF_SET_IN_REG_SET (basic_block_live_at_start[b],
0, regno,
{
regno_becomes_live (regno, VOIDmode)
});
}
and move it upwards outside its enclosing if statement, right after the line
struct insn_chain *c;
There is another bug in reload1.c: in function reload, find the following
fragment:
CLEAR_REG_SET (spilled_pseudos);
frame_pointer_needed = 1;
for (ep = reg_eliminate; ep < ®_eliminate[NUM_ELIMINABLE_REGS]; ep++)
and move the line "CLEAR_REG_SET (spilled_pseudos);" upwards, just before the
if statement that reads
if (caller_save_needed)
I'll send a proper patch on Monday once I have tested this a bit further.
Bernd