This is the mail archive of the gcc@gcc.gnu.org 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] |
Other format: | [Raw text] |
Daniel Berlin wrote:
On Tue, 13 May 2003, Joern Rennecke wrote:
Daniel Berlin wrote:No, they are invalid. It frequently gives us regs we can't use *at all*
(IE regardless of call status, they just aren't even okay for the
mode at all).
That is a different problem then, which indeed would be a bug in regclass.
No it wouldn't require new regclasses.
You can do this ahead of time, by looking at the modes of the pseudos you want to allocate in the register.
Which is what i suggested, rather than putting it in get_free_reg. The portion of code we have now that looks at the modes is regclass. So i suggested it goes there.
That would require to create new register classes to cover all
call-used/call-saved boundaries, both for full and partial saves, plus the
resultant unions and intersections.
So it seems that choose_spill_colors should take HARD_REGNO_CALL_PART_CLOBBEREDNo, this is also wrong.
into account, except that we are short of a mode there.
It's actually my patch, sent to Dale privately.
Going back a bit in this thread, I see: Herman ten Brugge:I do not think the problem is in df.c. The code in df.c walks through the
rtl and sets clobbered/used register info. We do not yet know what mode
the hard registers will get (reg_raw_mode can not be used here). The mode
is assigned in the new-ra pass.
I must say that I don't understand why reg_raw_mode can not be used there.
reg_raw_mode should be HFmode for the c4x registers in question, and
Dale Johannesen's patch to df_insn_refs_record should find the calls/register
combinations that could potentially cause a problem.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |