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