diff options
author | Xinliang David Li <davidxl@google.com> | 2009-12-09 17:44:47 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@gcc.gnu.org> | 2009-12-09 17:44:47 +0000 |
commit | af078bb0cf6e9b547c4f883e294f529914339cd0 (patch) | |
tree | ae0c35d1af3c096f401e85a1ad4720f640c8b5d4 /gcc/tree-ssa-pre.c | |
parent | ab8d2734416b73d1f7e0c6b38bb30598f5bbf91f (diff) | |
download | gcc-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.c | 11 |
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); |