This helper is called by tree_expr_nonzero_warnv_p(), a helper that is
gating a call to fold_overflow_warning() that we want to eliminate.
The helper is renamed to remove the "warn" from its name since it
doesn't throw or set any overflow warnings anymore.
gcc/c-family/ChangeLog:
* c-ubsan.cc (ubsan_maybe_instrument_reference_or_call): Removed
strict_overflow_p flag.
gcc/ChangeLog:
* fold-const.cc (tree_expr_nonzero_warnv_p): Removed
strict_overflow_p flag.
(tree_single_nonzero_warnv_p): Renamed to tree_single_nonzero_p.
(tree_single_nonzero_p): Removed strict_overflow_p flag.
* fold-const.h (tree_single_nonzero_warnv_p): Renamed to
tree_single_nonzero_p.
(tree_single_nonzero_p): Removed strict_overflow_p flag.
* gimple-range-fold.cc (fold_using_range::range_of_address):
Removed strict_overflow_p flag.
(range_from_readonly_load): Likewise.
* ipa-prop.cc (ipa_compute_jump_functions_for_edge): Likewise.
* tree-ssa-phiopt.cc (absorbing_element_p): Likewise.
* value-query.cc (range_query::get_tree_range): Likewise.
---
gcc/c-family/c-ubsan.cc | 6 ++----
gcc/fold-const.cc | 18 +++++-------------
gcc/fold-const.h | 2 +-
gcc/gimple-range-fold.cc | 6 ++----
gcc/ipa-prop.cc | 3 +--
gcc/tree-ssa-phiopt.cc | 2 +-
gcc/value-query.cc | 3 +--
7 files changed, 13 insertions(+), 27 deletions(-)
diff --git a/gcc/c-family/c-ubsan.cc b/gcc/c-family/c-ubsan.cc
index 155af5e952c..fe4987f6a30 100644
--- a/gcc/c-family/c-ubsan.cc
+++ b/gcc/c-family/c-ubsan.cc
@@ -903,16 +903,14 @@ ubsan_maybe_instrument_reference_or_call (location_t loc,
tree op, tree ptype,
{
if (sanitize_flags_p (SANITIZE_NULL) && TREE_CODE (op) == ADDR_EXPR)
{
- bool strict_overflow_p = false;
- /* tree_single_nonzero_warnv_p will not return true for non-weak
+ /* tree_single_nonzero_p will not return true for non-weak
non-automatic decls with -fno-delete-null-pointer-checks,
which is disabled during -fsanitize=null. We don't want to
instrument those, just weak vars though. */
int save_flag_delete_null_pointer_checks
= flag_delete_null_pointer_checks;
flag_delete_null_pointer_checks = 1;
- if (!tree_single_nonzero_warnv_p (op, &strict_overflow_p)
- || strict_overflow_p)
+ if (!tree_single_nonzero_p (op))
instrument = true;
flag_delete_null_pointer_checks
= save_flag_delete_null_pointer_checks;
diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc
index b4592016b21..69ca334c043 100644
--- a/gcc/fold-const.cc
+++ b/gcc/fold-const.cc
@@ -10822,7 +10822,7 @@ tree_expr_nonzero_warnv_p (tree t, bool
*strict_overflow_p)
case tcc_constant:
case tcc_declaration:
case tcc_reference:
- return tree_single_nonzero_warnv_p (t, strict_overflow_p);
+ return tree_single_nonzero_p (t);
default:
break;
@@ -10846,7 +10846,7 @@ tree_expr_nonzero_warnv_p (tree t, bool
*strict_overflow_p)
case ADDR_EXPR:
case WITH_SIZE_EXPR:
case SSA_NAME:
- return tree_single_nonzero_warnv_p (t, strict_overflow_p);
+ return tree_single_nonzero_p (t);
case COMPOUND_EXPR:
case MODIFY_EXPR:
@@ -15336,14 +15336,10 @@ tree_binary_nonzero_p (enum tree_code code, tree
type, tree op0, tree op1)
/* Return true when T is an address and is known to be nonzero.
For floating point we further ensure that T is not denormal.
- Similar logic is present in nonzero_address in rtlanal.h.
-
- If the return value is based on the assumption that signed overflow
- is undefined, set *STRICT_OVERFLOW_P to true; otherwise, don't
- change *STRICT_OVERFLOW_P. */
+ Similar logic is present in nonzero_address in rtlanal.h. */
bool
-tree_single_nonzero_warnv_p (tree t, bool *strict_overflow_p)
+tree_single_nonzero_p (tree t)
{
bool sub_strict_overflow_p;
switch (TREE_CODE (t))
@@ -15384,11 +15380,7 @@ tree_single_nonzero_warnv_p (tree t, bool
*strict_overflow_p)
&sub_strict_overflow_p)
&& tree_expr_nonzero_warnv_p (TREE_OPERAND (t, 2),
&sub_strict_overflow_p))
- {
- if (sub_strict_overflow_p)
- *strict_overflow_p = true;
- return true;
- }
+ return true;
break;
case SSA_NAME:
diff --git a/gcc/fold-const.h b/gcc/fold-const.h
index 7bd2e31fff0..d6de959c810 100644
--- a/gcc/fold-const.h
+++ b/gcc/fold-const.h
@@ -164,7 +164,7 @@ extern bool inverse_conditions_p (const_tree, const_tree);
extern bool tree_unary_nonzero_p (enum tree_code, tree, tree);
extern bool tree_binary_nonzero_p (enum tree_code, tree, tree, tree op1);
-extern bool tree_single_nonzero_warnv_p (tree, bool *);
+extern bool tree_single_nonzero_p (tree);
extern bool tree_unary_nonnegative_warnv_p (enum tree_code, tree, tree,
bool *, int);
extern bool tree_binary_nonnegative_warnv_p (enum tree_code, tree, tree, tree,
diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc
index 2a968a646d2..345b8b54022 100644
--- a/gcc/gimple-range-fold.cc
+++ b/gcc/gimple-range-fold.cc
@@ -844,7 +844,6 @@ fold_using_range::range_of_address (prange &r, gimple
*stmt, fur_source &src)
gcc_checking_assert (gimple_code (stmt) == GIMPLE_ASSIGN);
gcc_checking_assert (gimple_assign_rhs_code (stmt) == ADDR_EXPR);
- bool strict_overflow_p;
tree expr = gimple_assign_rhs1 (stmt);
poly_int64 bitsize, bitpos;
tree offset;
@@ -912,7 +911,7 @@ fold_using_range::range_of_address (prange &r, gimple
*stmt, fur_source &src)
}
// Handle "= &a".
- if (tree_single_nonzero_warnv_p (expr, &strict_overflow_p))
+ if (tree_single_nonzero_p (expr))
{
r.set_nonzero (TREE_TYPE (gimple_assign_rhs1 (stmt)));
return true;
@@ -958,8 +957,7 @@ range_from_readonly_load (vrange &r, tree type, tree cst,
if (POINTER_TYPE_P (type))
{
- bool strict_overflow_p;
- return tree_single_nonzero_warnv_p (cst, &strict_overflow_p);
+ return tree_single_nonzero_p (cst);
}
if (TREE_CODE (cst) != INTEGER_CST)
diff --git a/gcc/ipa-prop.cc b/gcc/ipa-prop.cc
index 12e936ba29b..3b0b2f8b9e7 100644
--- a/gcc/ipa-prop.cc
+++ b/gcc/ipa-prop.cc
@@ -2513,8 +2513,7 @@ ipa_compute_jump_functions_for_edge (struct
ipa_func_body_info *fbi,
|| vr.varying_p ()
|| vr.undefined_p ())
{
- bool strict_overflow = false;
- if (tree_single_nonzero_warnv_p (arg, &strict_overflow))
+ if (tree_single_nonzero_p (arg))
vr.set_nonzero (TREE_TYPE (arg));
else
vr.set_varying (TREE_TYPE (arg));
diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
index 9ce24067377..5d5997dbab4 100644
--- a/gcc/tree-ssa-phiopt.cc
+++ b/gcc/tree-ssa-phiopt.cc
@@ -1274,7 +1274,7 @@ absorbing_element_p (tree_code code, tree arg, bool
right, tree rval)
case ROUND_MOD_EXPR:
return (!right
&& integer_zerop (arg)
- && tree_single_nonzero_warnv_p (rval, NULL));
+ && tree_single_nonzero_p (rval));
default:
return false;
diff --git a/gcc/value-query.cc b/gcc/value-query.cc
index e05f728905e..df1369eb6cf 100644
--- a/gcc/value-query.cc
+++ b/gcc/value-query.cc
@@ -383,8 +383,7 @@ range_query::get_tree_range (vrange &r, tree expr, gimple
*stmt,
case ADDR_EXPR:
{
// Handle &var which can show up in phi arguments.
- bool ov;
- if (tree_single_nonzero_warnv_p (expr, &ov))
+ if (tree_single_nonzero_p (expr))
{
r.set_nonzero (type);
return true;
--
2.43.0