diff options
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1838747..f87b5b5 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -7535,11 +7535,21 @@ gimplify_body (tree *body_p, tree fndecl, bool do_parms) *body_p = NULL_TREE; /* If we had callee-copies statements, insert them at the beginning - of the function. */ + of the function and clear DECL_VALUE_EXPR_P on the parameters. */ if (!gimple_seq_empty_p (parm_stmts)) { + tree parm; + gimplify_seq_add_seq (&parm_stmts, gimple_bind_body (outer_bind)); gimple_bind_set_body (outer_bind, parm_stmts); + + for (parm = DECL_ARGUMENTS (current_function_decl); + parm; parm = TREE_CHAIN (parm)) + if (DECL_HAS_VALUE_EXPR_P (parm)) + { + DECL_HAS_VALUE_EXPR_P (parm) = 0; + DECL_IGNORED_P (parm) = 0; + } } if (nonlocal_vlas) |