aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gimplify.c12
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a70aceb..70fa628 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-03-01 Richard Guenther <rguenther@suse.de>
+ Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/41250
+ * gimplify.c (gimplify_body): Unset DECL_HAS_VALUE_EXPR_P on
+ gimplified parameters.
+
2010-03-01 Christian Bruel <christian.bruel@st.com>
* except.c (dw2_build_landing_pads): set LABEL_PRESERVE_P.
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)