1/* PR c/5681 2 This testcase failed on IA-32 at -O0, because safe_from_p 3 incorrectly assumed it is safe to first write into a.a2 b-1 4 and then read the original value from it. */ 5 6int bar (float); 7 8struct A { 9 float a1; 10 int a2; 11} a; 12 13int b; 14 15void foo (void) 16{ 17 a.a2 = bar (a.a1); 18 a.a2 = a.a2 < b - 1 ? a.a2 : b - 1; 19 if (a.a2 >= b - 1) 20 abort (); 21} 22 23int bar (float x) 24{ 25 return 2241; 26} 27 28int main() 29{ 30 a.a1 = 1.0f; 31 b = 3384; 32 foo (); 33 return 0; 34} 35