diff options
author | Richard Biener <rguenther@suse.de> | 2013-01-07 14:06:26 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-01-07 14:06:26 +0000 |
commit | e167c04d0610b49fe27420e71123d7dbba98bde0 (patch) | |
tree | dc28dc21412a809e6d62d26768335ec24b6de555 /gcc/tree-ssa-pre.c | |
parent | 0139aaab42fae137f8e518d85e8dc211c2a82f48 (diff) | |
download | gcc-e167c04d0610b49fe27420e71123d7dbba98bde0.zip gcc-e167c04d0610b49fe27420e71123d7dbba98bde0.tar.gz gcc-e167c04d0610b49fe27420e71123d7dbba98bde0.tar.bz2 |
re PR tree-optimization/55888 (ICE in bitmap_set_replace_value, at tree-ssa-pre.c:867)
2013-01-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/55888
PR tree-optimization/55862
* tree-ssa-pre.c (phi_translate_1): Revert previous change.
(valid_in_sets): Check if a NAME has a leader in AVAIL_OUT,
not if it is contained therein.
* gcc.dg/torture/pr55888.c: New testcase.
From-SVN: r194971
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index ed89738..0f0b8d0 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1729,10 +1729,6 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2, edge e = find_edge (pred, gimple_bb (def_stmt)); tree def = PHI_ARG_DEF (def_stmt, e->dest_idx); - /* Valueize it. */ - if (TREE_CODE (def) == SSA_NAME) - def = VN_INFO (def)->valnum; - /* Handle constant. */ if (is_gimple_min_invariant (def)) return get_or_alloc_expr_for_constant (def); @@ -1978,7 +1974,8 @@ valid_in_sets (bitmap_set_t set1, bitmap_set_t set2, pre_expr expr, switch (expr->kind) { case NAME: - return bitmap_set_contains_expr (AVAIL_OUT (block), expr); + return bitmap_find_leader (AVAIL_OUT (block), + get_expr_value_id (expr)) != NULL; case NARY: { unsigned int i; |