aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-10-17 13:46:34 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-10-17 13:46:34 +0000
commit44b00dbca0929cbed83b1f326b5f96e3d0bc3f2d (patch)
tree2c637f6cf644ed9611b82e77b291cd861881aaaf /gcc/tree-vrp.c
parenta9260b7eb688df43a724e25421ba40f35a89fee9 (diff)
downloadgcc-44b00dbca0929cbed83b1f326b5f96e3d0bc3f2d.zip
gcc-44b00dbca0929cbed83b1f326b5f96e3d0bc3f2d.tar.gz
gcc-44b00dbca0929cbed83b1f326b5f96e3d0bc3f2d.tar.bz2
re PR tree-optimization/77988 (ICE on valid code at -Os and above on x86_64-linux-gnu: verify_gimple failed)
2016-10-17 Richard Biener <rguenther@suse.de> PR tree-optimization/77988 * tree-vrp.c (remove_range_assertions): Use replace_uses_by. * gcc.dg/torture/pr77988.c: New testcase. From-SVN: r241242
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 00a08fd..1aebc72 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -6882,7 +6882,6 @@ remove_range_assertions (void)
for (si = gsi_after_labels (bb), is_unreachable = -1; !gsi_end_p (si);)
{
gimple *stmt = gsi_stmt (si);
- gimple *use_stmt;
if (is_gimple_assign (stmt)
&& gimple_assign_rhs_code (stmt) == ASSERT_EXPR)
@@ -6890,8 +6889,6 @@ remove_range_assertions (void)
tree lhs = gimple_assign_lhs (stmt);
tree rhs = gimple_assign_rhs1 (stmt);
tree var;
- use_operand_p use_p;
- imm_use_iterator iter;
var = ASSERT_EXPR_VAR (rhs);
@@ -6927,12 +6924,7 @@ remove_range_assertions (void)
}
/* Propagate the RHS into every use of the LHS. */
- FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs)
- {
- FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
- SET_USE (use_p, var);
- update_stmt (use_stmt);
- }
+ replace_uses_by (lhs, var);
/* And finally, remove the copy, it is not needed. */
gsi_remove (&si, true);