diff options
author | Richard Biener <rguenther@suse.de> | 2016-09-30 07:09:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-09-30 07:09:28 +0000 |
commit | 68ad1df5f5cd80b15c5015bb86230bf2c5b2bc3e (patch) | |
tree | 2288d16253c0d992f87308a69b56b0cf44c0c04c /gcc | |
parent | f334c828feae86ecdcc6a8f0b35425147057539f (diff) | |
download | gcc-68ad1df5f5cd80b15c5015bb86230bf2c5b2bc3e.zip gcc-68ad1df5f5cd80b15c5015bb86230bf2c5b2bc3e.tar.gz gcc-68ad1df5f5cd80b15c5015bb86230bf2c5b2bc3e.tar.bz2 |
tree-vrp.c (intersect_ranges): If we failed to handle the intersection choose a constant singleton range if...
2016-09-30 Richard Biener <rguenther@suse.de>
* tree-vrp.c (intersect_ranges): If we failed to handle
the intersection choose a constant singleton range if available.
From-SVN: r240647
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d0a4199..25129cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-09-30 Richard Biener <rguenther@suse.de> + * tree-vrp.c (intersect_ranges): If we failed to handle + the intersection choose a constant singleton range if available. + +2016-09-30 Richard Biener <rguenther@suse.de> + PR tree-optimization/77399 * tree-ssa-forwprop.c (simplify_vector_constructor): Handle float <-> int conversions. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index dbff92f..7a08be7 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -8555,7 +8555,16 @@ intersect_ranges (enum value_range_type *vr0type, /* As a fallback simply use { *VRTYPE, *VR0MIN, *VR0MAX } as result for the intersection. That's always a conservative - correct estimate. */ + correct estimate unless VR1 is a constant singleton range + in which case we choose that. */ + if (vr1type == VR_RANGE + && is_gimple_min_invariant (vr1min) + && vrp_operand_equal_p (vr1min, vr1max)) + { + *vr0type = vr1type; + *vr0min = vr1min; + *vr0max = vr1max; + } return; } |