aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-11-28 14:58:11 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-11-28 14:58:11 +0000
commit4aa458f2ac11aef044a08fcb32dc2c2401cf6561 (patch)
tree4de8c7b0b37f10808fb3874b112408d5dc6787ce /gcc/tree-vrp.c
parent73ff3db2f452c816fce0c14c6c40bc7df56ebf9f (diff)
downloadgcc-4aa458f2ac11aef044a08fcb32dc2c2401cf6561.zip
gcc-4aa458f2ac11aef044a08fcb32dc2c2401cf6561.tar.gz
gcc-4aa458f2ac11aef044a08fcb32dc2c2401cf6561.tar.bz2
re PR tree-optimization/80776 (-Wformat-overflow false positive for %d on integer bounded by __builtin_unreachable)
2017-11-28 Richard Biener <rguenther@suse.de> PR tree-optimization/80776 * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info): Declare. * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info): New function. (evrp_range_analyzer::record_ranges_from_incoming_edges): If the incoming edge is an effective fallthru because the other edge only reaches a __builtin_unreachable () then record ranges derived from the controlling condition in SSA info. (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info. (evrp_range_analyzer::record_ranges_from_stmt): Likewise. * gcc.dg/pr80776-1.c: New testcase. * gcc.dg/pr80776-2.c: Likewise. From-SVN: r255201
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r--gcc/tree-vrp.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 1217f82..a86b382 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -5082,10 +5082,9 @@ all_imm_uses_in_stmt_or_feed_cond (tree var, gimple *stmt, basic_block cond_bb)
var is the x_3 var from ASSERT_EXPR, we can clear low 5 bits
from the non-zero bitmask. */
-static void
-maybe_set_nonzero_bits (basic_block bb, tree var)
+void
+maybe_set_nonzero_bits (edge e, tree var)
{
- edge e = single_pred_edge (bb);
basic_block cond_bb = e->src;
gimple *stmt = last_stmt (cond_bb);
tree cst;
@@ -5200,7 +5199,7 @@ remove_range_assertions (void)
set_range_info (var, SSA_NAME_RANGE_TYPE (lhs),
SSA_NAME_RANGE_INFO (lhs)->get_min (),
SSA_NAME_RANGE_INFO (lhs)->get_max ());
- maybe_set_nonzero_bits (bb, var);
+ maybe_set_nonzero_bits (single_pred_edge (bb), var);
}
}