This is the mail archive of the gcc-patches@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]

Re: Followup for reg_equiv_invariant patch: Fix PR39871


On 07/24/2010 03:09 PM, IainS wrote:
> 
> On 17 Jun 2010, at 22:53, Bernd Schmidt wrote:
> 
>>
>> This is what I committed after retesting on ARM (with -O2 -fpic included
>> in TORTURE_OPTIONS).
> 
> this caused:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45054

Hmm, there seem to be two latent problems that suddenly show up in one
testcase...

In replace_pseudos_in, we have a series of if statements, which tries to
pick the correct new home from the various possible alternatives.  This
seems to need a check for reg_equiv_invariant.

The other is a crash because when compiling a function with 120 or so
registers, spilled_pseudos has bit 165 set from the previous function -
it's not cleared at the top of reload, and if I had to hazard a guess,
it wasn't cleared in ira_reassign_pseudos due to ALLOCNO_DONT_REASSIGN_P
(conflict_a) or somesuch while compiling the previous function.

Vlad, I think it would be helpful if you could take a look at the
spilled_pseudos mechanism.  It was changed with the introduction of IRA,
and it now has outdated code and comments of the form "if we're using
IRA, we do something else".  Also, I'm not sure I understand why this
code needed to be changed for IRA and how it is supposed to work now, so
anything you can do to explain would be good.


Bernd

Attachment: reg165.diff
Description: Text document


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