https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69241
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ppalka at gcc dot gnu.org --- Comment #11 from Patrick Palka <ppalka at gcc dot gnu.org> --- More reduced test case, that does not depend on -ipa-icf: struct R { R (const R&) { } }; __attribute__ ((noreturn)) R f (); R c () { f (); } Untested fix: diff --git a/gcc/gimplify.c b/gcc/gimplify.c index ce1e712..e07cd04 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -4830,7 +4830,8 @@ gimplify_modify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, } } notice_special_calls (call_stmt); - if (!gimple_call_noreturn_p (call_stmt)) + if (!gimple_call_noreturn_p (call_stmt) + || gimple_call_return_slot_opt_p (call_stmt)) gimple_call_set_lhs (call_stmt, *to_p); assign = call_stmt; }