/* PR c/5681 This testcase failed on IA-32 at -O0, because safe_from_p incorrectly assumed it is safe to first write into a.a2 b-1 and then read the original value from it. */ int bar (float); struct A { float a1; int a2; } a; int b; void foo (void) { a.a2 = bar (a.a1); a.a2 = a.a2 < b - 1 ? a.a2 : b - 1; if (a.a2 >= b - 1) abort (); } int bar (float x) { return 2241; } int main() { a.a1 = 1.0f; b = 3384; foo (); return 0; }