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

unsigned int __GIMPLE (ssa,startwith("uninit1"))
foo (unsigned int v)
{
  /* The warning is not bogus, because (5 & 3) != 0 and therefore if v == 5,
     the value of undef is used without being initialized.  */
  unsigned int undef;        /* { dg-warning "may be used uninitialized" } */
  unsigned int _2;
  unsigned int _9;
  unsigned int _10;
  unsigned pred;

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

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

  /* An undef value flows into a phi.  */
  __BB(4):
  undef_1 = __PHI (__BB2: undef_5(D), __BB3: undef_8);
  pred = v_4(D) & 3u;
  if (pred != 0u)
    goto __BB5;
  else
    goto __BB6;

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

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

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