tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...

2017-05-08  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
	(gimple_assign_nonzero): ... this and remove strict_overflow_p
	argument.
	(gimple_stmt_nonzero_warnv_p): Rename to ...
	(gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
	argument.
	(vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
	(extract_range_basic): Adjust, do not disable propagation on
	strict overflow sensitive simplification.
	(vrp_visit_cond_stmt): Likewise.

From-SVN: r247738
This commit is contained in:
Richard Biener 2017-05-08 12:52:44 +00:00 committed by Richard Biener
parent 18b8c294e2
commit da11a720a3
2 changed files with 26 additions and 25 deletions

View file

@ -1,3 +1,16 @@
2017-05-08 Richard Biener <rguenther@suse.de>
* tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
(gimple_assign_nonzero): ... this and remove strict_overflow_p
argument.
(gimple_stmt_nonzero_warnv_p): Rename to ...
(gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
argument.
(vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
(extract_range_basic): Adjust, do not disable propagation on
strict overflow sensitive simplification.
(vrp_visit_cond_stmt): Likewise.
2017-05-05 Jan Hubicka <hubicka@ucw.cz>
* ipa-inline-analysis.c (estimate_function_body_sizes): Recompute

View file

@ -857,27 +857,28 @@ symbolic_range_based_on_p (value_range *vr, const_tree sym)
*STRICT_OVERFLOW_P.*/
static bool
gimple_assign_nonzero_warnv_p (gimple *stmt, bool *strict_overflow_p)
gimple_assign_nonzero_p (gimple *stmt)
{
enum tree_code code = gimple_assign_rhs_code (stmt);
bool strict_overflow_p;
switch (get_gimple_rhs_class (code))
{
case GIMPLE_UNARY_RHS:
return tree_unary_nonzero_warnv_p (gimple_assign_rhs_code (stmt),
gimple_expr_type (stmt),
gimple_assign_rhs1 (stmt),
strict_overflow_p);
&strict_overflow_p);
case GIMPLE_BINARY_RHS:
return tree_binary_nonzero_warnv_p (gimple_assign_rhs_code (stmt),
gimple_expr_type (stmt),
gimple_assign_rhs1 (stmt),
gimple_assign_rhs2 (stmt),
strict_overflow_p);
&strict_overflow_p);
case GIMPLE_TERNARY_RHS:
return false;
case GIMPLE_SINGLE_RHS:
return tree_single_nonzero_warnv_p (gimple_assign_rhs1 (stmt),
strict_overflow_p);
&strict_overflow_p);
case GIMPLE_INVALID_RHS:
gcc_unreachable ();
default:
@ -891,12 +892,12 @@ gimple_assign_nonzero_warnv_p (gimple *stmt, bool *strict_overflow_p)
*STRICT_OVERFLOW_P.*/
static bool
gimple_stmt_nonzero_warnv_p (gimple *stmt, bool *strict_overflow_p)
gimple_stmt_nonzero_p (gimple *stmt)
{
switch (gimple_code (stmt))
{
case GIMPLE_ASSIGN:
return gimple_assign_nonzero_warnv_p (stmt, strict_overflow_p);
return gimple_assign_nonzero_p (stmt);
case GIMPLE_CALL:
{
tree fndecl = gimple_call_fndecl (stmt);
@ -934,13 +935,13 @@ gimple_stmt_nonzero_warnv_p (gimple *stmt, bool *strict_overflow_p)
}
}
/* Like tree_expr_nonzero_warnv_p, but this function uses value ranges
/* Like tree_expr_nonzero_p, but this function uses value ranges
obtained so far. */
static bool
vrp_stmt_computes_nonzero (gimple *stmt, bool *strict_overflow_p)
vrp_stmt_computes_nonzero (gimple *stmt)
{
if (gimple_stmt_nonzero_warnv_p (stmt, strict_overflow_p))
if (gimple_stmt_nonzero_p (stmt))
return true;
/* If we have an expression of the form &X->a, then the expression
@ -3927,8 +3928,7 @@ extract_range_basic (value_range *vr, gimple *stmt)
if (INTEGRAL_TYPE_P (type)
&& gimple_stmt_nonnegative_warnv_p (stmt, &sop))
set_value_range_to_nonnegative (vr, type);
else if (vrp_stmt_computes_nonzero (stmt, &sop)
&& !sop)
else if (vrp_stmt_computes_nonzero (stmt))
set_value_range_to_nonnull (vr, type);
else
set_value_range_to_varying (vr);
@ -7568,7 +7568,6 @@ static void
vrp_visit_cond_stmt (gcond *stmt, edge *taken_edge_p)
{
tree val;
bool sop;
*taken_edge_p = NULL;
@ -7634,25 +7633,14 @@ vrp_visit_cond_stmt (gcond *stmt, edge *taken_edge_p)
additional checking. Testing on several code bases (GCC, DLV,
MICO, TRAMP3D and SPEC2000) showed that doing this results in
4 more predicates folded in SPEC. */
sop = false;
bool sop;
val = vrp_evaluate_conditional_warnv_with_ops (gimple_cond_code (stmt),
gimple_cond_lhs (stmt),
gimple_cond_rhs (stmt),
false, &sop, NULL);
if (val)
{
if (!sop)
*taken_edge_p = find_taken_edge (gimple_bb (stmt), val);
else
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file,
"\nIgnoring predicate evaluation because "
"it assumes that signed overflow is undefined");
val = NULL_TREE;
}
}
*taken_edge_p = find_taken_edge (gimple_bb (stmt), val);
if (dump_file && (dump_flags & TDF_DETAILS))
{