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;
     }

Reply via email to