aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-gori.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2020-10-27 20:13:46 -0400
committerAndrew MacLeod <amacleod@redhat.com>2020-10-27 20:17:29 -0400
commitc25d317cf7d4ea8df0402feb939ce286e5f42988 (patch)
tree606a076c0c7303648e51b6af80110f42bfeff0c2 /gcc/gimple-range-gori.cc
parent89bb01e7cbd82cdf318202d8185d765dcc338915 (diff)
downloadgcc-c25d317cf7d4ea8df0402feb939ce286e5f42988.zip
gcc-c25d317cf7d4ea8df0402feb939ce286e5f42988.tar.gz
gcc-c25d317cf7d4ea8df0402feb939ce286e5f42988.tar.bz2
Tweaks to ranger API routines.
Remove the gcc_assert wrappers that contain statements that need to be executed. Audit routines to ensure range is set to UNDEFINED when false is returned. * gimple-range-gori.cc (gori_compute_cache::cache_stmt): Accumulate return values and only set cache when everything returned true. * gimple-range.cc (get_tree_range): Set the return range to UNDEFINED when the range isn't supported. (gimple_ranger::calc_stmt): Return varying if the type is supported, even if the stmt processing failed. False otherwise. (range_of_builtin_ubsan_call): Don't use gcc_assert. (range_of_builtin_call): Ditto. (gimple_ranger::range_of_cond_expr): Ditto. (gimple_ranger::range_of_expr): Ditto (gimple_ranger::range_on_entry): Ditto. (gimple_ranger::range_on_exit): Ditto. (gimple_ranger::range_on_edge): DItto. (gimple_ranger::range_of_stmt): Don't use gcc_assert, and initialize return value to UNDEFINED.
Diffstat (limited to 'gcc/gimple-range-gori.cc')
-rw-r--r--gcc/gimple-range-gori.cc18
1 files changed, 10 insertions, 8 deletions
diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc
index de0f653..54385ba 100644
--- a/gcc/gimple-range-gori.cc
+++ b/gcc/gimple-range-gori.cc
@@ -1313,13 +1313,15 @@ gori_compute_cache::cache_stmt (gimple *stmt)
else if (tree cached_name = m_cache->same_cached_name (op1, op2))
{
tf_range op1_range, op2_range;
- gcc_assert (m_cache->get_range (op1_range, op1, cached_name));
- gcc_assert (m_cache->get_range (op2_range, op2, cached_name));
- gcc_assert (logical_combine (r_true_side, code, m_bool_one,
- op1_range, op2_range));
- gcc_assert (logical_combine (r_false_side, code, m_bool_zero,
- op1_range, op2_range));
- m_cache->set_range (lhs, cached_name,
- tf_range (r_true_side, r_false_side));
+ bool ok = m_cache->get_range (op1_range, op1, cached_name);
+ ok = ok && m_cache->get_range (op2_range, op2, cached_name);
+ ok = ok && logical_combine (r_true_side, code, m_bool_one,
+ op1_range, op2_range);
+ ok = ok && logical_combine (r_false_side, code, m_bool_zero,
+ op1_range, op2_range);
+ gcc_checking_assert (ok);
+ if (ok)
+ m_cache->set_range (lhs, cached_name,
+ tf_range (r_true_side, r_false_side));
}
}