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: virtual stack regs.


On Tue, Jun 19, 2007 at 11:11:54AM +0200, Uros Bizjak wrote:
> On 6/19/07, Rask Ingemann Lambertsen <rask@sygehus.dk> wrote:
> >
> >   It is possible to mess up the substitution that the vregs pass performs.
> >IIRC, it happened to me once because I accidentally put one of these 
> >virtual
> >pseudo inside a (clobber) or (use) or something like that. I don't quite
> >recall the details, but maybe the substitution fails if they appear outside
> >an operand?
> 
> There is one annoying case in PR32374, where on-the-stack constructor
> creates invalid memory clobber that includes virtual-stack-regs. These
> are simply ignored by vregs pass and this confuses dataflow register
> initialization.

   Yes, that sure rings a bell with me. A "bare" (clobber) with a
virtual-what-have-we reg inside it does the trick nicely. If it hadn't
been hidden inside a MEM, you would have seen the rnreg pass choke on it,
IIRC.

   My DKK 0.02 worth: I don't see the point in clobbering a memory location
just before storing into it. We do so with pseudos wider than BITS_PER_WORD
just before storing into all BITS_PER_WORD sized subregs of it, but that's
because life analysis doesn't (didn't?) handle subregs in a useful way. We
shouldn't do the same for MEMs.

-- 
Rask Ingemann Lambertsen


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