tree-vrp.c (extract_range_from_binary_expr_1): Normalize VR_VARYING for PLUS/MINUS_EXPR.
* tree-vrp.c (extract_range_from_binary_expr_1): Normalize VR_VARYING for PLUS/MINUS_EXPR. From-SVN: r264307
This commit is contained in:
parent
e2162daa93
commit
310ee703a2
@ -1,3 +1,8 @@
|
||||
2018-09-14 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* tree-vrp.c (extract_range_from_binary_expr_1): Normalize
|
||||
VR_VARYING for PLUS/MINUS_EXPR.
|
||||
|
||||
2018-09-14 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
|
||||
* config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve
|
||||
|
@ -1415,6 +1415,22 @@ extract_range_from_binary_expr_1 (value_range *vr,
|
||||
range and see what we end up with. */
|
||||
if (code == PLUS_EXPR || code == MINUS_EXPR)
|
||||
{
|
||||
/* This will normalize things such that calculating
|
||||
[0,0] - VR_VARYING is not dropped to varying, but is
|
||||
calculated as [MIN+1, MAX]. */
|
||||
if (vr0.type == VR_VARYING)
|
||||
{
|
||||
vr0.type = VR_RANGE;
|
||||
vr0.min = vrp_val_min (expr_type);
|
||||
vr0.max = vrp_val_max (expr_type);
|
||||
}
|
||||
if (vr1.type == VR_VARYING)
|
||||
{
|
||||
vr1.type = VR_RANGE;
|
||||
vr1.min = vrp_val_min (expr_type);
|
||||
vr1.max = vrp_val_max (expr_type);
|
||||
}
|
||||
|
||||
const bool minus_p = (code == MINUS_EXPR);
|
||||
tree min_op0 = vr0.min;
|
||||
tree min_op1 = minus_p ? vr1.max : vr1.min;
|
||||
|
Loading…
Reference in New Issue
Block a user