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]

Re: Trying to track down a register allocation issue


On May 14, 2012, at 5:47 PM, Joern Rennecke wrote:

> Quoting Paul_Koning@Dell.com:
> 
>> I'm running into an ICE due to what looks like wrong register  allocation, and I'm trying to figure out where the problem lies.  It  shows up with today's GCC (trunk).  I haven't yet tried to narrow it  down to a particular change.
>> 
>> It shows up in the pdp11 target, -O2.  Not clear that this is pdp11 specific.
> 
> If a match test is confused with an overlap test somehwhere, the incidence
> would be influenced by the endianness.  The little-endian equivalent
> would be (reg:SI 2) versus (reg:HI 3).  Except that the latter wouldn't
> tend to be created by (misdirected) attempts to tie modes of different sizes.

Hm.  But pdp11.h says:
#define MODES_TIEABLE_P(MODE1, MODE2) 0
so it seems that tying modes of different sizes should not be happening here.  Also, I don't see reg:SI 2 vs. reg:HI 3, I see reg:SI 2 vs. reg:HI 2.  So the overlap is explicit, it doesn't depend on endians or mode sizes.

> And of course you have a word size factor here; on a 32 or 64 bit target,
> you need larger modes to get multi-hard-register pseudos.

	paul



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