https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125711
--- Comment #8 from Iain Sandoe <iains at gcc dot gnu.org> ---
maybe this is sufficient... (not tested)
diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc
index 8bfc71315f9..1fd0c1eb372 100644
--- a/gcc/gimplify.cc
+++ b/gcc/gimplify.cc
@@ -1879,7 +1879,8 @@ gimplify_return_expr (tree stmt, gimple_seq *pre_p)
return GS_ERROR;
if (!ret_expr
- || TREE_CODE (ret_expr) == RESULT_DECL)
+ || TREE_CODE (ret_expr) == RESULT_DECL
+ || ret_expr == gimplify_ctxp->return_temp)
{
maybe_add_early_return_predict_stmt (pre_p);
greturn *ret = gimple_build_return (ret_expr);