1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -g -funroll-loops -std=gnu99" } */ 3 4 struct S 5 { 6 unsigned long s1; 7 int **s2; 8 }; 9 struct T 10 { 11 unsigned long t1, t2; 12 }; 13 struct U 14 { 15 int u1, u2; 16 unsigned long u3; 17 }; 18 struct V 19 { 20 int v1, v3; 21 struct T *v2; 22 struct U *v4; 23 }; 24 struct W 25 { 26 int w1; 27 struct V **w2; 28 }; 29 struct S *foo1 (void); 30 int *foo2 (void); 31 32 void test(struct W * w)33test (struct W *w) 34 { 35 for (int i = 0; i < w->w1; i++) 36 { 37 struct V *v = w->w2[i]; 38 struct S *t = foo1 (); 39 if (!t) 40 for (int j; j < v->v1;) 41 { 42 struct T *q = &v->v2[j]; 43 t += (q->t2 - q->t1) * 45000L; 44 } 45 for (; v->v3;) 46 { 47 struct U *v4 = (struct U *) &v->v4; 48 if (v4->u1 && v4->u2 >= 0 && v4->u2) 49 { 50 int *s = foo2 (); 51 if (!s) 52 for (int k = 0; k <= v4->u2; k++) 53 { 54 struct T *q = &v->v2[k]; 55 if (k == v4->u2) 56 v4->u3 += (q->t1) * 1000000; 57 } 58 t->s2[t->s1] = s; 59 } 60 } 61 int *s = foo2 (); 62 if (!t) 63 t->s2[t->s1] = s; 64 } 65 } 66