1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3 
4 typedef signed char int8_T;
5 typedef int int32_T;
6 
7 typedef struct {
8   int8_T a;
9 } struct0_T;
10 
11 typedef struct {
12   struct0_T f10[4];
13 } struct_T;
14 
15 typedef struct {
16   struct_T f9[4];
17 } b_struct_T;
18 
19 typedef struct {
20   b_struct_T f8[4];
21 } c_struct_T;
22 
23 typedef struct {
24   c_struct_T f7[4];
25 } d_struct_T;
26 
27 typedef struct {
28   d_struct_T f6[4];
29 } e_struct_T;
30 
31 typedef struct {
32   e_struct_T f5[4];
33 } f_struct_T;
34 
35 typedef struct {
36   f_struct_T f4[4];
37 } g_struct_T;
38 
39 typedef struct {
40   g_struct_T f3[4];
41 } h_struct_T;
42 
43 typedef struct {
44   h_struct_T f2[4];
45 } i_struct_T;
46 
47 typedef struct {
48   i_struct_T f1[4];
49 } j_struct_T;
50 
51 typedef struct {
52   struct {
53     j_struct_T ds21[4];
54     i_struct_T ds20[4];
55     i_struct_T r9;
56   } f0;
57 } deep_struct_arraysStackData;
58 
59 /* Function Definitions */
deep_struct_arrays(deep_struct_arraysStackData * SD,int8_T in1,int8_T inCount,int8_T * out1,int8_T * out2,struct0_T out3[4])60 void deep_struct_arrays(deep_struct_arraysStackData *SD,
61   int8_T in1, int8_T inCount, int8_T *out1, int8_T *out2, struct0_T out3[4])
62 {
63   struct0_T r;
64   struct_T r1;
65   b_struct_T r2;
66   c_struct_T r3;
67   d_struct_T r4;
68   e_struct_T r5;
69   f_struct_T r6;
70   g_struct_T r7;
71   h_struct_T r8;
72   int32_T count;
73   int32_T i;
74 
75   /*  Check properties of input in1 */
76   /*  Check properties of input inCount */
77   /*  Copyright 2006 The MathWorks, Inc. */
78   r.a = in1;
79   r1.f10[0] = r;
80   r1.f10[1] = r;
81   r1.f10[2] = r;
82   r1.f10[3] = r;
83   r2.f9[0] = r1;
84   r2.f9[1] = r1;
85   r2.f9[2] = r1;
86   r2.f9[3] = r1;
87   r3.f8[0] = r2;
88   r3.f8[1] = r2;
89   r3.f8[2] = r2;
90   r3.f8[3] = r2;
91   r4.f7[0] = r3;
92   r4.f7[1] = r3;
93   r4.f7[2] = r3;
94   r4.f7[3] = r3;
95   r5.f6[0] = r4;
96   r5.f6[1] = r4;
97   r5.f6[2] = r4;
98   r5.f6[3] = r4;
99   r6.f5[0] = r5;
100   r6.f5[1] = r5;
101   r6.f5[2] = r5;
102   r6.f5[3] = r5;
103   r7.f4[0] = r6;
104   r7.f4[1] = r6;
105   r7.f4[2] = r6;
106   r7.f4[3] = r6;
107   r8.f3[0] = r7;
108   r8.f3[1] = r7;
109   r8.f3[2] = r7;
110   r8.f3[3] = r7;
111   SD->f0.r9.f2[0] = r8;
112   SD->f0.r9.f2[1] = r8;
113   SD->f0.r9.f2[2] = r8;
114   SD->f0.r9.f2[3] = r8;
115   SD->f0.ds20[0] = SD->f0.r9;
116   SD->f0.ds20[3] = SD->f0.r9;
117   count = 0;
118   while (count < inCount) {
119     i = in1 + SD->f0.ds20[0].f2[0].f3[0].f4[0].f5[0].f6[0].f7[0].f8[0].f9[0]
120       .f10[0].a;
121     if (i > 127) {
122       i = 127;
123     } else {
124       if (i < -128) {
125         i = -128;
126       }
127     }
128 
129     SD->f0.ds20[0].f2[0].f3[0].f4[0].f5[0].f6[0].f7[0].f8[0].f9[0].f10[0].a =
130       (int8_T)i;
131     i = SD->f0.ds20[3].f2[3].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].a
132       + 3;
133     if (i > 127) {
134       i = 127;
135     }
136 
137     SD->f0.ds20[3].f2[3].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].a =
138       (int8_T)i;
139     count++;
140   }
141 
142   if (inCount > 10) {
143     SD->f0.ds21[0].f1[1].f2[2].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].
144       a = 14;
145   } else {
146     SD->f0.ds21[0].f1[1].f2[2].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].
147       a = 16;
148   }
149 
150   *out1 = SD->f0.ds20[0].f2[0].f3[0].f4[0].f5[0].f6[0].f7[0].f8[0].f9[0].f10[0].
151     a;
152   *out2 = SD->f0.ds20[3].f2[3].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].
153     a;
154   out3[0] = r;
155   out3[1] = r;
156   out3[2] = r;
157   out3[3] = SD->f0.ds21[0].f1[1].f2[2].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3]
158     .f10[3];
159 }
160