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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |14.0

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
We do recognize f now on the trunk after r14-1654-g7ceed7e3e29c .

  _9 = (unsigned int) b_2(D);
  # RANGE [irange] unsigned int [0, 0][+INF, +INF]
  _10 = -_9;
  _4 = x_5(D) ^ y_6(D);
  _3 = _10 & _4;
  _7 = _3 ^ y_6(D);

After that patch _3 is able to convert to:
  _3 = _4 * _9;

And we recongize that _7 to be:
gimple_simplified to _7 = b_2(D) ? x_5(D) : y_6(D);

Because match has a pattern for `A ^ (A^B)*cmp into cmp ? B : A` (since
r13-793-g8fb94fc6097c ).

Reply via email to