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: g++.old-deja/g++.mike/p7325.C - suspected bogus test case


Mark Mitchell <mark@codesourcery.com> writes:

>>Let me reiterate that: it does not test anything meaningful.  It
>>currently passes or fails depending on details of the platform ABI.
>>Worse, the compiler is within its rights to extend the lifetimes of
>>the temporaries because it notices that their addresses have been
>> taken.  In fact, I expect Ken Zadeck's better alias analysis will
>> have that effect.
>>
> Why do you expect that?  Independently of whether or not their
> addresses have been taken, the language says these temporaries go away
> at a particular point.  If the compiler extends their lifetimes
> unnecessarily because it thinks that pointers to them might survive,
> that's an unnecessary pessimization -- unless it has some other good
> reason for doing that.

It seemed a plausible consequence of the interprocedural escape
analysis that he was describing.  Sure, the language says these
temporaries go away at a particular point, but the data-flow analysis
says their addresses are preserved, so the conservative optimization
decision is not to recycle the storage.  We might choose to do it
anyway, of course ... which I think only supports my point that this
isn't an effective test for stack slot reuse.

> I agree that this an ugly mechanism for testing for this optimization,
> and that some kind of stack-frame dumping might be better.  On the
> other hand, we don't have a way of doing that at present.   And this
> test does test for an optimization that we want to do, in general.

I don't see it as an effective test for that optimization.  At all.
(I do agree that this is an optimization we want to do and currently
don't.)

zw


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