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

--- Comment #5 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
Even simpler:

int f (int*);
int g(void);
int foo (void)
{
  int b;

  if (g() && f (&b))
    return 0;

  return b;
}

we have:

  # .MEM_7 = VDEF <.MEM_6(D)>
  # USE = nonlocal null { D.1912 } (escaped)
  # CLB = nonlocal null { D.1912 } (escaped)
  _1 = gD.1908 ();
  if (_1 != 0)
    goto <bb 4>; [33.00%]
  else
    goto <bb 6>; [67.00%]

;;   basic block 6, loop depth 0, count 719407024 (estimated locally), maybe
hot
  # .MEM_11 = PHI <.MEM_7(6), .MEM_8(8)>
  # DEBUG BEGIN_STMT
  # VUSE <.MEM_11>
  _9 = bD.1912;

but uninit pass does not follow the PHI chain for memory ops.

Reply via email to