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

unsigned int __GIMPLE (ssa,startwith("uninit1"))
foo (unsigned int v)
{
  /* Uninit warning here would be bogus, because (16 & 3) == 0 and therefore
     if v == 16, the uninit value is not used (the use is properly guarded).  */
  unsigned int undef;        /* { dg-bogus "may be used uninitialized" } */
  unsigned int _2;
  unsigned int _9;
  unsigned int _10;
  unsigned pred;

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

  /* 'undef' is defined conditionally (under 'v != 16' 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;
}
