summaryrefslogtreecommitdiff
path: root/testsuite/tests/basic-more/pr1271.ml
blob: adbb8734ff8bf281fcc32a56fbff4d73b9b111e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
(* TEST
   include testing
*)

(* GPR#1271 *)

module F (X : sig val x : int end) = struct
  let rec f1 y = f270 (X.x + y)
  and f2 y = (f1 [@inlined never]) y
  and f3 y = (f2 [@inlined never]) y
  and f4 y = (f3 [@inlined never]) y
  and f5 y = (f4 [@inlined never]) y
  and f6 y = (f5 [@inlined never]) y
  and f7 y = (f6 [@inlined never]) y
  and f8 y = (f7 [@inlined never]) y
  and f9 y = (f8 [@inlined never]) y
  and f10 y = (f9 [@inlined never]) y
  and f11 y = (f10 [@inlined never]) y
  and f12 y = (f11 [@inlined never]) y
  and f13 y = (f12 [@inlined never]) y
  and f14 y = (f13 [@inlined never]) y
  and f15 y = (f14 [@inlined never]) y
  and f16 y = (f15 [@inlined never]) y
  and f17 y = (f16 [@inlined never]) y
  and f18 y = (f17 [@inlined never]) y
  and f19 y = (f18 [@inlined never]) y
  and f20 y = (f19 [@inlined never]) y
  and f21 y = (f20 [@inlined never]) y
  and f22 y = (f21 [@inlined never]) y
  and f23 y = (f22 [@inlined never]) y
  and f24 y = (f23 [@inlined never]) y
  and f25 y = (f24 [@inlined never]) y
  and f26 y = (f25 [@inlined never]) y
  and f27 y = (f26 [@inlined never]) y
  and f28 y = (f27 [@inlined never]) y
  and f29 y = (f28 [@inlined never]) y
  and f30 y = (f29 [@inlined never]) y
  and f31 y = (f30 [@inlined never]) y
  and f32 y = (f31 [@inlined never]) y
  and f33 y = (f32 [@inlined never]) y
  and f34 y = (f33 [@inlined never]) y
  and f35 y = (f34 [@inlined never]) y
  and f36 y = (f35 [@inlined never]) y
  and f37 y = (f36 [@inlined never]) y
  and f38 y = (f37 [@inlined never]) y
  and f39 y = (f38 [@inlined never]) y
  and f40 y = (f39 [@inlined never]) y
  and f41 y = (f40 [@inlined never]) y
  and f42 y = (f41 [@inlined never]) y
  and f43 y = (f42 [@inlined never]) y
  and f44 y = (f43 [@inlined never]) y
  and f45 y = (f44 [@inlined never]) y
  and f46 y = (f45 [@inlined never]) y
  and f47 y = (f46 [@inlined never]) y
  and f48 y = (f47 [@inlined never]) y
  and f49 y = (f48 [@inlined never]) y
  and f50 y = (f49 [@inlined never]) y
  and f51 y = (f50 [@inlined never]) y
  and f52 y = (f51 [@inlined never]) y
  and f53 y = (f52 [@inlined never]) y
  and f54 y = (f53 [@inlined never]) y
  and f55 y = (f54 [@inlined never]) y
  and f56 y = (f55 [@inlined never]) y
  and f57 y = (f56 [@inlined never]) y
  and f58 y = (f57 [@inlined never]) y
  and f59 y = (f58 [@inlined never]) y
  and f60 y = (f59 [@inlined never]) y
  and f61 y = (f60 [@inlined never]) y
  and f62 y = (f61 [@inlined never]) y
  and f63 y = (f62 [@inlined never]) y
  and f64 y = (f63 [@inlined never]) y
  and f65 y = (f64 [@inlined never]) y
  and f66 y = (f65 [@inlined never]) y
  and f67 y = (f66 [@inlined never]) y
  and f68 y = (f67 [@inlined never]) y
  and f69 y = (f68 [@inlined never]) y
  and f70 y = (f69 [@inlined never]) y
  and f71 y = (f70 [@inlined never]) y
  and f72 y = (f71 [@inlined never]) y
  and f73 y = (f72 [@inlined never]) y
  and f74 y = (f73 [@inlined never]) y
  and f75 y = (f74 [@inlined never]) y
  and f76 y = (f75 [@inlined never]) y
  and f77 y = (f76 [@inlined never]) y
  and f78 y = (f77 [@inlined never]) y
  and f79 y = (f78 [@inlined never]) y
  and f80 y = (f79 [@inlined never]) y
  and f81 y = (f80 [@inlined never]) y
  and f82 y = (f81 [@inlined never]) y
  and f83 y = (f82 [@inlined never]) y
  and f84 y = (f83 [@inlined never]) y
  and f85 y = (f84 [@inlined never]) y
  and f86 y = (f85 [@inlined never]) y
  and f87 y = (f86 [@inlined never]) y
  and f88 y = (f87 [@inlined never]) y
  and f89 y = (f88 [@inlined never]) y
  and f90 y = (f89 [@inlined never]) y
  and f91 y = (f90 [@inlined never]) y
  and f92 y = (f91 [@inlined never]) y
  and f93 y = (f92 [@inlined never]) y
  and f94 y = (f93 [@inlined never]) y
  and f95 y = (f94 [@inlined never]) y
  and f96 y = (f95 [@inlined never]) y
  and f97 y = (f96 [@inlined never]) y
  and f98 y = (f97 [@inlined never]) y
  and f99 y = (f98 [@inlined never]) y
  and f100 y = (f99 [@inlined never]) y
  and f101 y = (f100 [@inlined never]) y
  and f102 y = (f101 [@inlined never]) y
  and f103 y = (f102 [@inlined never]) y
  and f104 y = (f103 [@inlined never]) y
  and f105 y = (f104 [@inlined never]) y
  and f106 y = (f105 [@inlined never]) y
  and f107 y = (f106 [@inlined never]) y
  and f108 y = (f107 [@inlined never]) y
  and f109 y = (f108 [@inlined never]) y
  and f110 y = (f109 [@inlined never]) y
  and f111 y = (f110 [@inlined never]) y
  and f112 y = (f111 [@inlined never]) y
  and f113 y = (f112 [@inlined never]) y
  and f114 y = (f113 [@inlined never]) y
  and f115 y = (f114 [@inlined never]) y
  and f116 y = (f115 [@inlined never]) y
  and f117 y = (f116 [@inlined never]) y
  and f118 y = (f117 [@inlined never]) y
  and f119 y = (f118 [@inlined never]) y
  and f120 y = (f119 [@inlined never]) y
  and f121 y = (f120 [@inlined never]) y
  and f122 y = (f121 [@inlined never]) y
  and f123 y = (f122 [@inlined never]) y
  and f124 y = (f123 [@inlined never]) y
  and f125 y = (f124 [@inlined never]) y
  and f126 y = (f125 [@inlined never]) y
  and f127 y = (f126 [@inlined never]) y
  and f128 y = (f127 [@inlined never]) y
  and f129 y = (f128 [@inlined never]) y
  and f130 y = (f129 [@inlined never]) y
  and f131 y = (f130 [@inlined never]) y
  and f132 y = (f131 [@inlined never]) y
  and f133 y = (f132 [@inlined never]) y
  and f134 y = (f133 [@inlined never]) y
  and f135 y = (f134 [@inlined never]) y
  and f136 y = (f135 [@inlined never]) y
  and f137 y = (f136 [@inlined never]) y
  and f138 y = (f137 [@inlined never]) y
  and f139 y = (f138 [@inlined never]) y
  and f140 y = (f139 [@inlined never]) y
  and f141 y = (f140 [@inlined never]) y
  and f142 y = (f141 [@inlined never]) y
  and f143 y = (f142 [@inlined never]) y
  and f144 y = (f143 [@inlined never]) y
  and f145 y = (f144 [@inlined never]) y
  and f146 y = (f145 [@inlined never]) y
  and f147 y = (f146 [@inlined never]) y
  and f148 y = (f147 [@inlined never]) y
  and f149 y = (f148 [@inlined never]) y
  and f150 y = (f149 [@inlined never]) y
  and f151 y = (f150 [@inlined never]) y
  and f152 y = (f151 [@inlined never]) y
  and f153 y = (f152 [@inlined never]) y
  and f154 y = (f153 [@inlined never]) y
  and f155 y = (f154 [@inlined never]) y
  and f156 y = (f155 [@inlined never]) y
  and f157 y = (f156 [@inlined never]) y
  and f158 y = (f157 [@inlined never]) y
  and f159 y = (f158 [@inlined never]) y
  and f160 y = (f159 [@inlined never]) y
  and f161 y = (f160 [@inlined never]) y
  and f162 y = (f161 [@inlined never]) y
  and f163 y = (f162 [@inlined never]) y
  and f164 y = (f163 [@inlined never]) y
  and f165 y = (f164 [@inlined never]) y
  and f166 y = (f165 [@inlined never]) y
  and f167 y = (f166 [@inlined never]) y
  and f168 y = (f167 [@inlined never]) y
  and f169 y = (f168 [@inlined never]) y
  and f170 y = (f169 [@inlined never]) y
  and f171 y = (f170 [@inlined never]) y
  and f172 y = (f171 [@inlined never]) y
  and f173 y = (f172 [@inlined never]) y
  and f174 y = (f173 [@inlined never]) y
  and f175 y = (f174 [@inlined never]) y
  and f176 y = (f175 [@inlined never]) y
  and f177 y = (f176 [@inlined never]) y
  and f178 y = (f177 [@inlined never]) y
  and f179 y = (f178 [@inlined never]) y
  and f180 y = (f179 [@inlined never]) y
  and f181 y = (f180 [@inlined never]) y
  and f182 y = (f181 [@inlined never]) y
  and f183 y = (f182 [@inlined never]) y
  and f184 y = (f183 [@inlined never]) y
  and f185 y = (f184 [@inlined never]) y
  and f186 y = (f185 [@inlined never]) y
  and f187 y = (f186 [@inlined never]) y
  and f188 y = (f187 [@inlined never]) y
  and f189 y = (f188 [@inlined never]) y
  and f190 y = (f189 [@inlined never]) y
  and f191 y = (f190 [@inlined never]) y
  and f192 y = (f191 [@inlined never]) y
  and f193 y = (f192 [@inlined never]) y
  and f194 y = (f193 [@inlined never]) y
  and f195 y = (f194 [@inlined never]) y
  and f196 y = (f195 [@inlined never]) y
  and f197 y = (f196 [@inlined never]) y
  and f198 y = (f197 [@inlined never]) y
  and f199 y = (f198 [@inlined never]) y
  and f200 y = (f199 [@inlined never]) y
  and f201 y = (f200 [@inlined never]) y
  and f202 y = (f201 [@inlined never]) y
  and f203 y = (f202 [@inlined never]) y
  and f204 y = (f203 [@inlined never]) y
  and f205 y = (f204 [@inlined never]) y
  and f206 y = (f205 [@inlined never]) y
  and f207 y = (f206 [@inlined never]) y
  and f208 y = (f207 [@inlined never]) y
  and f209 y = (f208 [@inlined never]) y
  and f210 y = (f209 [@inlined never]) y
  and f211 y = (f210 [@inlined never]) y
  and f212 y = (f211 [@inlined never]) y
  and f213 y = (f212 [@inlined never]) y
  and f214 y = (f213 [@inlined never]) y
  and f215 y = (f214 [@inlined never]) y
  and f216 y = (f215 [@inlined never]) y
  and f217 y = (f216 [@inlined never]) y
  and f218 y = (f217 [@inlined never]) y
  and f219 y = (f218 [@inlined never]) y
  and f220 y = (f219 [@inlined never]) y
  and f221 y = (f220 [@inlined never]) y
  and f222 y = (f221 [@inlined never]) y
  and f223 y = (f222 [@inlined never]) y
  and f224 y = (f223 [@inlined never]) y
  and f225 y = (f224 [@inlined never]) y
  and f226 y = (f225 [@inlined never]) y
  and f227 y = (f226 [@inlined never]) y
  and f228 y = (f227 [@inlined never]) y
  and f229 y = (f228 [@inlined never]) y
  and f230 y = (f229 [@inlined never]) y
  and f231 y = (f230 [@inlined never]) y
  and f232 y = (f231 [@inlined never]) y
  and f233 y = (f232 [@inlined never]) y
  and f234 y = (f233 [@inlined never]) y
  and f235 y = (f234 [@inlined never]) y
  and f236 y = (f235 [@inlined never]) y
  and f237 y = (f236 [@inlined never]) y
  and f238 y = (f237 [@inlined never]) y
  and f239 y = (f238 [@inlined never]) y
  and f240 y = (f239 [@inlined never]) y
  and f241 y = (f240 [@inlined never]) y
  and f242 y = (f241 [@inlined never]) y
  and f243 y = (f242 [@inlined never]) y
  and f244 y = (f243 [@inlined never]) y
  and f245 y = (f244 [@inlined never]) y
  and f246 y = (f245 [@inlined never]) y
  and f247 y = (f246 [@inlined never]) y
  and f248 y = (f247 [@inlined never]) y
  and f249 y = (f248 [@inlined never]) y
  and f250 y = (f249 [@inlined never]) y
  and f251 y = (f250 [@inlined never]) y
  and f252 y = (f251 [@inlined never]) y
  and f253 y = (f252 [@inlined never]) y
  and f254 y = (f253 [@inlined never]) y
  and f255 y = (f254 [@inlined never]) y
  and f256 y = (f255 [@inlined never]) y
  and f257 y = (f256 [@inlined never]) y
  and f258 y = (f257 [@inlined never]) y
  and f259 y = (f258 [@inlined never]) y
  and f260 y = (f259 [@inlined never]) y
  and f261 y = (f260 [@inlined never]) y
  and f262 y = (f261 [@inlined never]) y
  and f263 y = (f262 [@inlined never]) y
  and f264 y = (f263 [@inlined never]) y
  and f265 y = (f264 [@inlined never]) y
  and f266 y = (f265 [@inlined never]) y
  and f267 y = (f266 [@inlined never]) y
  and f268 y = (f267 [@inlined never]) y
  and f269 y = (f268 [@inlined never]) y
  and f270 y = (f269 [@inlined never]) y
end

let words0 = Gc.minor_words ()
let words1 = Gc.minor_words ()
module X = F (struct let x = 42 end)
let words2 = Gc.minor_words ()

let expected = words1 -. words0

let () =
  match Sys.backend_type with
  | Sys.Native ->
    Printf.printf "%.0f" ((words2 -. words1) -. expected)
  | Sys.Bytecode | Sys.Other _ ->
    print_string "0"