On Mon, Jan 9, 2012 at 3:57 PM, Aldy Hernandez <al...@redhat.com> wrote: > >> Ok with simply excluding SSA_NAMEs like >> >> @@ -4411,16 +4411,27 @@ gimplify_modify_expr_rhs (tree *expr_p, >> /* It's OK to use the target directly if it's being >> initialized. */ >> use_target = true; >> - else if (TREE_CODE (*to_p) != SSA_NAME >> && ....) >> - /* Don't use the original target if it's already >> addressable; >> - if its address escapes, and the called function uses >> the >> - NRV optimization, a conforming program could see *to_p >> - change before the called function returns; see >> c++/19317. >> - When optimizing, the return_slot pass marks more >> functions >> - as safe after we have escape info. */ >> - use_target = false; >> - else >> - use_target = true; >> >> as SSA_NAMEs can never become addressable during gimplification. > > > Ok, since I'm never quite 100% sure I'm following your suggestions... I'm > posting the final patch here. If tests pass, I'll commit.
Yes, that looks fine. Thanks, Richard. > Thanks again.