// PR c++/13371 // Bug: We were failing to properly protect the lhs on the line marked // "here" from multiple evaluation. // { dg-do run } extern "C" int printf (const char *, ...); enum E { E1, E2 }; struct A { E e : 8; unsigned char c; }; A ar[2]; int c; int f() { ++c; printf ("f()\n"); return 0; } int main() { ar[0].c = 0xff; ar[f()].e = E1; // here return (c != 1 || ar[0].c != 0xff); }