mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-29 22:25:57 +08:00
re PR tree-optimization/23141 (ACATS FAIL c45651a fixed point wrong code)
PR 23141 PR 23142 * tree-vrp.c (vrp_meet): Fix the intersection of equivalence sets VR0->EQUIV and VR1->EQUIV when meeting a range and an anti-range. (vrp_visit_phi_node): Only prevent infinite iterations when the previous result and the new result are both VR_RANGEs. From-SVN: r105436
This commit is contained in:
parent
7b71de2644
commit
2d33a2effd
@ -1,3 +1,13 @@
|
||||
2005-10-15 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
PR 23141
|
||||
PR 23142
|
||||
* tree-vrp.c (vrp_meet): Fix the intersection of equivalence
|
||||
sets VR0->EQUIV and VR1->EQUIV when meeting a range and an
|
||||
anti-range.
|
||||
(vrp_visit_phi_node): Only prevent infinite iterations when
|
||||
the previous result and the new result are both VR_RANGEs.
|
||||
|
||||
2005-10-15 Ranjit Mathew <rmathew@gcc.gnu.org>
|
||||
|
||||
* tree-into-ssa.c (mark_def_sites): Correct minor typo in
|
||||
|
@ -3497,8 +3497,11 @@ vrp_meet (value_range_t *vr0, value_range_t *vr1)
|
||||
&& !symbolic_range_p (vr1)
|
||||
&& !value_ranges_intersect_p (vr0, vr1))
|
||||
{
|
||||
/* Copy most of VR1 into VR0. Don't copy VR1's equivalence
|
||||
set. We need to compute the intersection of the two
|
||||
equivalence sets. */
|
||||
if (vr1->type == VR_ANTI_RANGE)
|
||||
copy_value_range (vr0, vr1);
|
||||
set_value_range (vr0, vr1->type, vr1->min, vr1->max, vr0->equiv);
|
||||
|
||||
/* The resulting set of equivalences is the intersection of
|
||||
the two sets. */
|
||||
@ -3609,7 +3612,7 @@ vrp_visit_phi_node (tree phi)
|
||||
/* To prevent infinite iterations in the algorithm, derive ranges
|
||||
when the new value is slightly bigger or smaller than the
|
||||
previous one. */
|
||||
if (lhs_vr->type == VR_RANGE)
|
||||
if (lhs_vr->type == VR_RANGE && vr_result.type == VR_RANGE)
|
||||
{
|
||||
if (!POINTER_TYPE_P (TREE_TYPE (lhs)))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user