aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-08-28 10:15:54 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-08-28 10:15:54 +0000
commit8e8bf292092c2d7e79f2e3d503ca1bdfe2642032 (patch)
tree45b5f39ec2f90968a67b50d4e9a340707cdcf01e /gcc
parentf2b0062c10f85110e52ad7daa8bc268cdc262b86 (diff)
downloadgcc-8e8bf292092c2d7e79f2e3d503ca1bdfe2642032.zip
gcc-8e8bf292092c2d7e79f2e3d503ca1bdfe2642032.tar.gz
gcc-8e8bf292092c2d7e79f2e3d503ca1bdfe2642032.tar.bz2
re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool) at gcc/gcc/tree-ssa-sccvn.c:5431 since r263875)
2018-08-28 Richard Biener <rguenther@suse.de> PR tree-optimization/87117 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Handle removed stmt without LHS (GIMPLE_NOP). From-SVN: r263912
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-sccvn.c47
2 files changed, 28 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 694fdf2..a357b4b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,12 @@
2018-08-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/87117
+ * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
+ Handle removed stmt without LHS (GIMPLE_NOP).
+
+2018-08-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/87117
* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude
void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P.
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 381fc8d..9277de0 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -5425,31 +5425,28 @@ eliminate_dom_walker::eliminate_cleanup (bool region_p)
do_release_defs = false;
}
}
- else
- {
- tree lhs = gimple_get_lhs (stmt);
- if (TREE_CODE (lhs) == SSA_NAME
- && !has_zero_uses (lhs))
- {
- if (dump_file && (dump_flags & TDF_DETAILS))
- fprintf (dump_file, "Keeping eliminated stmt live "
- "as copy because of out-of-region uses\n");
- tree sprime = eliminate_avail (gimple_bb (stmt), lhs);
- gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
- if (is_gimple_assign (stmt))
- {
- gimple_assign_set_rhs_from_tree (&gsi, sprime);
- update_stmt (gsi_stmt (gsi));
- continue;
- }
- else
- {
- gimple *copy = gimple_build_assign (lhs, sprime);
- gsi_insert_before (&gsi, copy, GSI_SAME_STMT);
- do_release_defs = false;
- }
- }
- }
+ else if (tree lhs = gimple_get_lhs (stmt))
+ if (TREE_CODE (lhs) == SSA_NAME
+ && !has_zero_uses (lhs))
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "Keeping eliminated stmt live "
+ "as copy because of out-of-region uses\n");
+ tree sprime = eliminate_avail (gimple_bb (stmt), lhs);
+ gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+ if (is_gimple_assign (stmt))
+ {
+ gimple_assign_set_rhs_from_tree (&gsi, sprime);
+ update_stmt (gsi_stmt (gsi));
+ continue;
+ }
+ else
+ {
+ gimple *copy = gimple_build_assign (lhs, sprime);
+ gsi_insert_before (&gsi, copy, GSI_SAME_STMT);
+ do_release_defs = false;
+ }
+ }
}
if (dump_file && (dump_flags & TDF_DETAILS))