------- Comment #1 from rguenth at gcc dot gnu dot org  2009-11-20 13:12 -------
Confirmed.  We do see

x_2: [0, 1]  EQUIVALENCES: { x_3(D) } (1 elements)
y_11: [0, 1]  EQUIVALENCES: { y_5(D) } (1 elements)

but have no code that actually makes use of this information in

<bb 4>:
  if (x_3(D) != 0)
    goto <bb 5>;
  else
    goto <bb 6>;

<bb 5>:
  if (y_5(D) != 0)
    goto <bb 7>;
  else
    goto <bb 6>;

<bb 6>:

<bb 7>:
  # D.2047_1 = PHI <0(6), -1(3), -1(2), 1(5)>
  return D.2047_1;

which we want to if-convert to

<bb 4>:
  tmp = x_3 & y_5;

<bb 7>:
  # D.2047_1 = PHI <tmp(4), -1(3), -1(2)>

but there is no code in VRP that does if-conversion.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-11-20 13:12:34
               date|                            |
            Summary|VRP fails to get rid of     |VRP should do if-conversion
                   |compares                    |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42117

Reply via email to