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: Q's about use of is_gimple_reg_rhs/is_gimple_tmp_var


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




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