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

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
With IVOPTs we get:
  # ivtmp.13_97 = PHI <ivtmp.13_96(12), 1(7)>
  _34 = MEM[(const __be32 *)_28 + -4B + ivtmp.13_97 * 4];
  _36 = MEM[(const __be32 *)_27 + -4B + ivtmp.13_97 * 4];
  if (_34 != _36)
    goto <bb 9>; [5.50%]
  else
    goto <bb 12>; [94.50%]

  <bb 9> [local count: 217424209]:
  _22 = (int) ivtmp.13_97;
  _40 = _22 * 32;
  xb_37 = _34 ^ _36;
  iftmp.1_53 = __fswab32 (xb_37);
  __asm__("clz  %0, %1" : "=r" ret_54 : "r" iftmp.1_53 : "cc");
  ret_56 = 32 - ret_54;
  _57 = _40 - ret_56;
  MEM[(struct ipv6_saddr_score *)&scores + 32B].matchlen = _57;
  if (_57 != 0)
    goto <bb 13>; [0.00%]
  else
    goto <bb 10>; [100.00%]

So there is no extra add one any more.
BUT with -fno-ivopts I still see the add one.

Reply via email to