diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2018-09-14 10:46:35 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2018-09-14 10:46:35 +0000 |
commit | 310ee703a20393d2278ff4c08e6f97bd16198564 (patch) | |
tree | 67c8f019d83e50371a82daad4559d565d051e3b7 /gcc | |
parent | e2162daa937fd10ee8e7863f4390483fb7b5e428 (diff) | |
download | gcc-310ee703a20393d2278ff4c08e6f97bd16198564.zip gcc-310ee703a20393d2278ff4c08e6f97bd16198564.tar.gz gcc-310ee703a20393d2278ff4c08e6f97bd16198564.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 02b128e..b5fb359 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index d26011a..1adb919 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -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; |