summaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 09:40:25 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 09:40:25 +0000
commitcc41c998cd7a0a9d7aa46721d7bec75376923e2a (patch)
tree9335fe7171096c65ae6ba562393e40be4ad83fcc /gcc/gimplify.c
parentd7ed0a45cb30fc6b41f04a163c02d550bb487a18 (diff)
downloadgcc-cc41c998cd7a0a9d7aa46721d7bec75376923e2a.tar.gz
2012-03-19 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 185514 using svnmerge git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@185516 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 07eb8fd81df..3c412944e33 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -2265,17 +2265,18 @@ gimplify_self_mod_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
arith_code = POINTER_PLUS_EXPR;
}
- t1 = build2 (arith_code, TREE_TYPE (*expr_p), lhs, rhs);
-
if (postfix)
{
- gimplify_assign (lvalue, t1, orig_post_p);
+ tree t2 = get_initialized_tmp_var (lhs, pre_p, NULL);
+ t1 = build2 (arith_code, TREE_TYPE (*expr_p), t2, rhs);
+ gimplify_assign (lvalue, t1, pre_p);
gimplify_seq_add_seq (orig_post_p, post);
- *expr_p = lhs;
+ *expr_p = t2;
return GS_ALL_DONE;
}
else
{
+ t1 = build2 (arith_code, TREE_TYPE (*expr_p), lhs, rhs);
*expr_p = build2 (MODIFY_EXPR, TREE_TYPE (lvalue), lvalue, t1);
return GS_OK;
}