aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2009-12-09 17:44:47 +0000
committerXinliang David Li <davidxl@gcc.gnu.org>2009-12-09 17:44:47 +0000
commitaf078bb0cf6e9b547c4f883e294f529914339cd0 (patch)
treeae0c35d1af3c096f401e85a1ad4720f640c8b5d4 /gcc/tree-ssa-pre.c
parentab8d2734416b73d1f7e0c6b38bb30598f5bbf91f (diff)
downloadgcc-af078bb0cf6e9b547c4f883e294f529914339cd0.zip
gcc-af078bb0cf6e9b547c4f883e294f529914339cd0.tar.gz
gcc-af078bb0cf6e9b547c4f883e294f529914339cd0.tar.bz2
fixing pr42337
From-SVN: r155111
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index a3e7ad8..b8e999c 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1490,10 +1490,17 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
continue;
else
{
+ pre_expr leader, result;
+ bitmap temp = BITMAP_ALLOC (&grand_bitmap_obstack);
unsigned int op_val_id = VN_INFO (newnary.op[i])->value_id;
- pre_expr leader = find_leader_in_sets (op_val_id, set1, set2);
- pre_expr result = phi_translate_1 (leader, set1, set2,
+
+ bitmap_copy (temp, seen);
+ leader = find_leader_in_sets (op_val_id, set1, set2);
+ result = phi_translate_1 (leader, set1, set2,
pred, phiblock, seen);
+ bitmap_copy (seen, temp);
+ BITMAP_FREE (temp);
+
if (result && result != leader)
{
tree name = get_representative_for (result);