Q's about use of is_gimple_reg_rhs/is_gimple_tmp_var

Diego Novillo dnovillo@redhat.com
Tue Aug 17 12:43:00 GMT 2004


On Tue, 2004-08-17 at 01:13, Jeffrey A Law wrote:
> On Mon, 2004-08-16 at 06:15, Richard Kenner wrote:
> > 	V = foo();
> > 
> >     If the call to foo does throw, the semantics of throw imply that the
> >     assignment to V must not execute.  That's why we expand this to:
> > 
> > 	tmp = foo ();
> > 	V = tmp;
> > 
> > Standards are "as if".  If there is no other assignment to V, then
> > there's no way to detect if the assignment occurred or not since V's
> > value if it did not occur is undefined.
> Right.  That would be a possible optimization.  Forcing the LHS to be
> a temporary ensures the condition that were is no other assignment to
> the variable.  If you have a clean way to test that this is the only
> assignment to the RHS, then sure, you can avoid the temporary copy.
> 
True, but I wouldn't bother, because of ...

> I'm not sure how useful that is since the copy propagator ought to do
> the right thing in the case you're considering.
> 
... this.  If the copy propagator doesn't get this case, we try and fix
the bug.  Let's avoid early micro optimizations.


Diego.



More information about the Gcc mailing list