Reload patch version 3
Bernd Schmidt
crux@pool.informatik.rwth-aachen.de
Fri Aug 28 05:52:00 GMT 1998
> 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
More information about the Gcc-patches
mailing list