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]
Other format: [Raw text]

Re: [PATCH] PR opt/10764: ICE using x86 logdf2


On Wed, 14 May 2003, Roger Sayle wrote:

> Which I believe is impossible for reload to handle.  The constraint
> on the second argument to UNSPEC is that it must be "u", i.e. in
> st(1).  But as I mentioned st(1) is clobbered by this "unspec"!
> My understanding is that reload doesn't perform live range splitting,
> so that if (reg:DF 62) is "coloured" as "(reg:DF 8 st(1))" then all
> occurances of it are register allocated to st(1).

Sort of.  It works like this: the traditional allocator (local-alloc and
global.c) allocate one hardreg for a whole pseudo.  In that sense reg 62
would indeed be st(1) everywhere.  But reloads work locally (ignore reload
inheritance for now): when there is an non-colored reference to any
pseudo, but must have one, then a hardreg is used, but that does _not_
influence references to that pseudo in other instructions.

Anyway this is not the problem here, as Richard already explained.
Because that operand is removed from the stack the insn must have an
explicit clobber, as that is how reg-stack.c notices such stack pops.
It's not really a problem of reloads.


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