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
This commit is contained in:
Richard Biener 2016-09-30 07:09:28 +00:00 committed by Richard Biener
parent f334c828fe
commit 68ad1df5f5
2 changed files with 15 additions and 1 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -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;
}