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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=101822,
                   |                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=99997,
                   |                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=71016

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #4)
> cond_removal_in_builtin_zero_pattern should have optimized the above but
> does not for some reason.
> Let me take a look.

So one problem is we have:
  <bb 2> [local count: 1073741824]:
  if (x_3(D) == 0)
    goto <bb 4>; [21.72%]
  else
    goto <bb 3>; [78.28%]

  <bb 3> [local count: 840525097]:
  _1 = __builtin_clz (x_3(D));
  _4 = (uint32_t) _1;

  <bb 4> [local count: 1073741824]:
  # _2 = PHI <32(2), _4(3)>


Which we don't handle in cond_removal_in_builtin_zero_pattern, this similar to
PR 99997 and PR 101822, that is the code which added to fix PR 71016 is getting
in the way.

Reply via email to