Commit 1c3099cc by Richard Biener Committed by Richard Biener

tree-vrp.c (vrp_visit_assignment_or_call): Handle simplifications to SSA names…

tree-vrp.c (vrp_visit_assignment_or_call): Handle simplifications to SSA names via extract_range_from_ssa_name if allowed.

2016-11-28  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (vrp_visit_assignment_or_call): Handle
	simplifications to SSA names via extract_range_from_ssa_name
	if allowed.

From-SVN: r242921
parent 6522add2
2016-11-28 Richard Biener <rguenther@suse.de>
* tree-vrp.c (vrp_visit_assignment_or_call): Handle
simplifications to SSA names via extract_range_from_ssa_name
if allowed.
2016-11-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/78542
* tree-ssa-ccp.c (evaluate_stmt): Only valueize simplification
if allowed.
......@@ -7132,17 +7132,31 @@ vrp_visit_assignment_or_call (gimple *stmt, tree *output_p, value_range *vr)
&& TYPE_MAX_VALUE (TREE_TYPE (lhs)))
|| POINTER_TYPE_P (TREE_TYPE (lhs))))
{
*output_p = lhs;
/* Try folding the statement to a constant first. */
tree tem = gimple_fold_stmt_to_constant_1 (stmt, vrp_valueize,
vrp_valueize_1);
if (tem && is_gimple_min_invariant (tem))
set_value_range_to_value (vr, tem, NULL);
if (tem)
{
if (TREE_CODE (tem) == SSA_NAME
&& (SSA_NAME_IS_DEFAULT_DEF (tem)
|| ! prop_simulate_again_p (SSA_NAME_DEF_STMT (tem))))
{
extract_range_from_ssa_name (vr, tem);
return;
}
else if (is_gimple_min_invariant (tem))
{
set_value_range_to_value (vr, tem, NULL);
return;
}
}
/* Then dispatch to value-range extracting functions. */
else if (code == GIMPLE_CALL)
if (code == GIMPLE_CALL)
extract_range_basic (vr, stmt);
else
extract_range_from_assignment (vr, as_a <gassign *> (stmt));
*output_p = lhs;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment