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
This commit is contained in:
parent
6522add29b
commit
1c3099cca5
2 changed files with 24 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue