https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119470

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2025-03-26
           Keywords|                            |missed-optimization

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
In VRP1 we have:
```
  <bb 3> [local count: 955630224]:
  _1 = inc (i_5);
  _2 = i_5 + 1;
  if (_1 != _2)
    goto <bb 4>; [0.00%]
  else
    goto <bb 5>; [100.00%]

  <bb 4> [count: 0]:
  __builtin_unreachable ();

  <bb 5> [local count: 1073741824]:
  # i_5 = PHI <0(2), _1(3)>
```

Figuring out if we should reference _1 or _2 from i_5 is "hard", Sometimes GCC
do the replacement but not always and I am not sure we know which one is
correct always. In this case it is easy to use _2 is defined by i_5 but more
complex examples are out there.

Reply via email to