| // 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); | |
| } |