Q's about use of is_gimple_reg_rhs/is_gimple_tmp_var
Jeffrey A Law
law@redhat.com
Tue Aug 17 06:02:00 GMT 2004
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.
I'm not sure how useful that is since the copy propagator ought to do
the right thing in the case you're considering.
jeff
More information about the Gcc
mailing list