------- Additional Comments From dnovillo at gcc dot gnu dot org 2005-09-08 18:20 -------
This would be fixable inside VRP. Essentially we would need to insert chains of ASSERT_EXPRs to represent various predicates: D.1613_3 = x_2 > 5555; D.1614_5 = y_4 <= 6665; D.1615_6 = D.1613_3 && D.1614_5; if (D.1615_6) goto <L0>; else goto <L8>; At label L0, we know that: D.1615_10 = 1; D.1613_11 = 1; D.1614_12 = 1; y_13 = ASSERT_EXPR <y_4, y_4 <= 6665>; x_14 = ASSERT_EXPR <x_2, x_2 > 5555>; which is a bit sickening. It would be Much Better to avoid creating these obtuse predicates in fold(), though. Roger, Jeff, is there some hope for fixing this in fold() for 4.2? If not, I can work on VRP to try an understand these chains. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |sayle at gcc dot gnu dot org Target Milestone|--- |4.2.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15911