blob: b5e80c7b996a45707c5f777ebe8c7d613f2a3d82 (
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
|
(* TEST
* flambda
** native
ocamlopt_flags = "-O2 -inline-call-cost 1=20 -unbox-closures"
*)
let hide_until_round_2 init_in_hide f_in_hide =
let x1_in_hide =
match init_in_hide with
| 0 -> true
| _ -> false
in
ignore (Sys.opaque_identity x1_in_hide);
let x2_in_hide =
match init_in_hide with
| 0 -> true
| _ -> false
in
ignore (Sys.opaque_identity x2_in_hide);
f_in_hide
let foo bar init a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 =
let f_outer =
let baz = bar + 1 in
let rec f_inner x_in_f y_in_f b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 =
let dec =
b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11 + b12 + b13
in
match x_in_f with
| Some _ -> g_inner x_in_f (y_in_f - dec)
| None -> g_inner x_in_f (y_in_f - 2)
and g_inner x_in_g y_in_g =
let a1 = baz + 1 in
let a2 = a1 + 1 in
let a3 = a2 + 1 in
let a4 = a3 + 1 in
let a5 = a4 + 1 in
let a6 = a5 + 1 in
let a7 = a6 + 1 in
let a8 = a7 + 1 in
let a9 = a8 + 1 in
let a10 = a9 + 1 in
let a11 = a10 + 1 in
let a12 = a11 + 1 in
let a13 = a12 + 1 in
match x_in_g with
| Some _ ->
f_inner x_in_g (y_in_g - baz)
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
| None ->
f_inner x_in_g (y_in_g - baz)
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
in
f_inner
in
let s = Some init in
let f_through_hide = hide_until_round_2 init f_outer in
(f_through_hide [@specialised])
s 10 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
|