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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Blocks|42195                       |
             Status|ASSIGNED                    |NEW
           Assignee|pinskia at gcc dot gnu.org         |unassigned at gcc dot 
gnu.org

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am not going to fix this.
But right now we get:
  _8 = x_5(D) | y_6(D);
  _4 = (unsigned int) _8;
  if (_4 <= 1)
    goto <bb 3>; [57.43%]
  else
    goto <bb 5>; [42.57%]

  <bb 3> [local count: 616649929]:
  if (x_5(D) != 0)
    goto <bb 4>; [50.00%]
  else
    goto <bb 5>; [50.00%]

  <bb 4> [local count: 126413234]:
  _9 = y_6(D) != 0;
  _1 = (int) _9;

  <bb 5> [local count: 1073741824]:
  # _3 = PHI <x_5(D)(3), _1(4), -1(2)>

Part of the problem is realizing y_6 is [0,1] range when looking at _9/_1.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42195
[Bug 42195] missed xnor optimization.

Reply via email to