/* { dg-do compile } */
/* { dg-options "-fgimple -O -Wmaybe-uninitialized" } */

unsigned int __GIMPLE (ssa,startwith("uninit1"))
foo (unsigned int v)
{
  unsigned int undef;        /* { dg-warning "may be used uninitialized" } */
  unsigned int _2;
  unsigned int _9;
  unsigned int _10;

  __BB(2):
  if (v_4(D) != 1u)
    goto __BB3;
  else
    goto __BB4;

  __BB(3):
  undef_8 = 8u; // 'undef' is defined conditionally (under 'v != 1' predicate)
  goto __BB4;

  __BB(4):
  // An undef value flows into a phi.
  undef_1 = __PHI (__BB2: undef_5(D), __BB3: undef_8);
  if (v_4(D) != 2u) // This condition is neither a superset nor a subset of 'v != 1'.
    goto __BB5;
  else
    goto __BB6;

  __BB(5):
  _9 = undef_1; // The phi value is used here (under 'v != 2' predicate).
  goto __BB7;

  __BB(6):
  _10 = v_4(D);
  goto __BB7;

  __BB(7):
  _2 = __PHI (__BB5: _9, __BB6: _10);
  return _2;
}
