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


	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.


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