aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-10-01 16:23:23 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-10-01 16:23:23 +0000
commitc8ce33fa7fec7d4d0c0e2a8b8bb535b6d5cba0e0 (patch)
tree0d6ab17c627566b006769ae664f2d3297a608ae0 /gcc/tree-ssa-pre.c
parent256f88c6c0f6ffe9083a4fc3fb4eded341c772a4 (diff)
downloadgcc-c8ce33fa7fec7d4d0c0e2a8b8bb535b6d5cba0e0.zip
gcc-c8ce33fa7fec7d4d0c0e2a8b8bb535b6d5cba0e0.tar.gz
gcc-c8ce33fa7fec7d4d0c0e2a8b8bb535b6d5cba0e0.tar.bz2
re PR tree-optimization/37617 (ICE on valid code)
2008-10-01 Richard Guenther <rguenther@suse.de> PR tree-optimization/37617 * tree-ssa-pre.c (create_expression_by_pieces): During FRE do not add to the NEW_SETS. * gcc.c-torture/compile/pr37617.c: New testcase. From-SVN: r140816
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index cd344af..84c884b 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -2885,7 +2885,8 @@ create_expression_by_pieces (basic_block block, pre_expr expr,
VN_INFO (forcedname)->value_id = get_next_value_id ();
nameexpr = get_or_alloc_expr_for_name (forcedname);
add_to_value (VN_INFO (forcedname)->value_id, nameexpr);
- bitmap_value_replace_in_set (NEW_SETS (block), nameexpr);
+ if (!in_fre)
+ bitmap_value_replace_in_set (NEW_SETS (block), nameexpr);
bitmap_value_replace_in_set (AVAIL_OUT (block), nameexpr);
}
mark_symbols_for_renaming (stmt);