------- 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

Reply via email to