1  /* { dg-do compile } */
       2  
       3  short a, c;
       4  union {
       5      unsigned f0;
       6      unsigned short f1;
       7  } b;
       8  volatile int d;
       9  short fn1(short p1) { return p1 + a; }
      10  void fn2()
      11  {
      12    b.f0 = 0;
      13    for (;; b.f0 = fn1(b.f0))
      14      (c && b.f1) || d;
      15  }