Q's about use of is_gimple_reg_rhs/is_gimple_tmp_var
Richard Kenner
kenner@vlsi1.ultra.nyu.edu
Mon Aug 16 12:15:00 GMT 2004
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.
Therefore, the temporary need not be done if that is the only
assignment to V, which, I think is the only relevant condition. If V
is a temporary made just for this purpose, that condition is true, but
it might be in other cases as well.
More information about the Gcc
mailing list