| /* Test for PR target/20191. */ |
| |
| struct S1; |
| |
| struct S1 { |
| struct S1 *next; |
| float x; |
| }; |
| |
| struct S2 { |
| float y; |
| }; |
| |
| extern int func_ex1 (float); |
| |
| extern int f; |
| extern float n; |
| extern struct S1 *bp1; |
| extern struct S2 *bp2; |
| |
| inline float |
| func1 (int f, struct S2 *p2) |
| { |
| float a; |
| |
| if (f) |
| a = n >= p2->y ? n : p2->y; |
| else |
| a = n; |
| return a; |
| } |
| |
| inline float |
| func2 (struct S1 *p1, struct S2 *p2) |
| { |
| float a, b; |
| |
| if(n <= 1.0) |
| b = func1 (f, p2); |
| else |
| { |
| a = n <= p1->x ? 0.0 : p1->x; |
| b = a >= p2->y ? a : p2->y; |
| } |
| return(b); |
| } |
| |
| void |
| func3 (struct S1 *p) |
| { |
| float a = 0.0; |
| |
| if (f) |
| a = func2 (bp1, bp2); |
| if (func_ex1 (a)) |
| bp1 = p; |
| } |