aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-01-07 14:06:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-01-07 14:06:26 +0000
commite167c04d0610b49fe27420e71123d7dbba98bde0 (patch)
treedc28dc21412a809e6d62d26768335ec24b6de555 /gcc/tree-ssa-pre.c
parent0139aaab42fae137f8e518d85e8dc211c2a82f48 (diff)
downloadgcc-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.c7
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;