1 /* Test for PR target/20191. */ 2 3 struct S1; 4 5 struct S1 { 6 struct S1 *next; 7 float x; 8 }; 9 10 struct S2 { 11 float y; 12 }; 13 14 extern int func_ex1 (float); 15 16 extern int f; 17 extern float n; 18 extern struct S1 *bp1; 19 extern struct S2 *bp2; 20 21 inline float func1(int f,struct S2 * p2)22func1 (int f, struct S2 *p2) 23 { 24 float a; 25 26 if (f) 27 a = n >= p2->y ? n : p2->y; 28 else 29 a = n; 30 return a; 31 } 32 33 inline float func2(struct S1 * p1,struct S2 * p2)34func2 (struct S1 *p1, struct S2 *p2) 35 { 36 float a, b; 37 38 if(n <= 1.0) 39 b = func1 (f, p2); 40 else 41 { 42 a = n <= p1->x ? 0.0 : p1->x; 43 b = a >= p2->y ? a : p2->y; 44 } 45 return(b); 46 } 47 48 void func3(struct S1 * p)49func3 (struct S1 *p) 50 { 51 float a = 0.0; 52 53 if (f) 54 a = func2 (bp1, bp2); 55 if (func_ex1 (a)) 56 bp1 = p; 57 } 58