This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Reload patch version 3

> 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

     CLEAR_REG_SET (spilled_pseudos);
     frame_pointer_needed = 1;
     for (ep = reg_eliminate; ep < &reg_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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]