diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2020-10-27 20:13:46 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2020-10-27 20:17:29 -0400 |
commit | c25d317cf7d4ea8df0402feb939ce286e5f42988 (patch) | |
tree | 606a076c0c7303648e51b6af80110f42bfeff0c2 /gcc/gimple-range-gori.cc | |
parent | 89bb01e7cbd82cdf318202d8185d765dcc338915 (diff) | |
download | gcc-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.cc | 18 |
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)); } } |