Skip to content

Commit cf4eeef

Browse files
authored
Add no-stack-allocation variant of some tests that print lambda (#133)
* Add no-stack-allocation variant of some tests that print lambda * Remove unnecessary duplication in one case
1 parent 8f22438 commit cf4eeef

9 files changed

+784
-7
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
(setglobal Array_spec!
2+
(let
3+
(int_a =[intarray] (makearray[int] 1 2 3)
4+
float_a =[floatarray] (makearray[float] 1. 2. 3.)
5+
addr_a =[addrarray] (makearray[addr] "a" "b" "c"))
6+
(seq (array.length[int] int_a) (array.length[float] float_a)
7+
(array.length[addr] addr_a)
8+
(function {nlocal = 0} a[genarray] : int (array.length[gen] a))
9+
(array.get[int] int_a 0) (array.get[float] float_a 0)
10+
(array.get[addr] addr_a 0)
11+
(function {nlocal = 0} a[genarray] (array.get[gen] a 0))
12+
(array.unsafe_get[int] int_a 0) (array.unsafe_get[float] float_a 0)
13+
(array.unsafe_get[addr] addr_a 0)
14+
(function {nlocal = 0} a[genarray] (array.unsafe_get[gen] a 0))
15+
(array.set[int] int_a 0 1) (array.set[float] float_a 0 1.)
16+
(array.set[addr] addr_a 0 "a")
17+
(function {nlocal = 0} a[genarray] x : int (array.set[gen] a 0 x))
18+
(array.unsafe_set[int] int_a 0 1)
19+
(array.unsafe_set[float] float_a 0 1.)
20+
(array.unsafe_set[addr] addr_a 0 "a")
21+
(function {nlocal = 0} a[genarray] x : int
22+
(array.unsafe_set[gen] a 0 x))
23+
(let
24+
(eta_gen_len =
25+
(function {nlocal = 0} prim[genarray] stub
26+
(array.length[gen] prim))
27+
eta_gen_safe_get =
28+
(function {nlocal = 0} prim[genarray] prim[int] stub
29+
(array.get[gen] prim prim))
30+
eta_gen_unsafe_get =
31+
(function {nlocal = 0} prim[genarray] prim[int] stub
32+
(array.unsafe_get[gen] prim prim))
33+
eta_gen_safe_set =
34+
(function {nlocal = 0} prim[genarray] prim[int] prim stub
35+
(array.set[gen] prim prim prim))
36+
eta_gen_unsafe_set =
37+
(function {nlocal = 0} prim[genarray] prim[int] prim stub
38+
(array.unsafe_set[gen] prim prim prim))
39+
eta_int_len =
40+
(function {nlocal = 0} prim[intarray] stub
41+
(array.length[int] prim))
42+
eta_int_safe_get =
43+
(function {nlocal = 0} prim[intarray] prim[int] stub
44+
(array.get[int] prim prim))
45+
eta_int_unsafe_get =
46+
(function {nlocal = 0} prim[intarray] prim[int] stub
47+
(array.unsafe_get[int] prim prim))
48+
eta_int_safe_set =
49+
(function {nlocal = 0} prim[intarray] prim[int] prim[int] stub
50+
(array.set[int] prim prim prim))
51+
eta_int_unsafe_set =
52+
(function {nlocal = 0} prim[intarray] prim[int] prim[int] stub
53+
(array.unsafe_set[int] prim prim prim))
54+
eta_float_len =
55+
(function {nlocal = 0} prim[floatarray] stub
56+
(array.length[float] prim))
57+
eta_float_safe_get =
58+
(function {nlocal = 0} prim[floatarray] prim[int] stub
59+
(array.get[float] prim prim))
60+
eta_float_unsafe_get =
61+
(function {nlocal = 0} prim[floatarray] prim[int] stub
62+
(array.unsafe_get[float] prim prim))
63+
eta_float_safe_set =
64+
(function {nlocal = 0} prim[floatarray] prim[int] prim[float] stub
65+
(array.set[float] prim prim prim))
66+
eta_float_unsafe_set =
67+
(function {nlocal = 0} prim[floatarray] prim[int] prim[float] stub
68+
(array.unsafe_set[float] prim prim prim))
69+
eta_addr_len =
70+
(function {nlocal = 0} prim[addrarray] stub
71+
(array.length[addr] prim))
72+
eta_addr_safe_get =
73+
(function {nlocal = 0} prim[addrarray] prim[int] stub
74+
(array.get[addr] prim prim))
75+
eta_addr_unsafe_get =
76+
(function {nlocal = 0} prim[addrarray] prim[int] stub
77+
(array.unsafe_get[addr] prim prim))
78+
eta_addr_safe_set =
79+
(function {nlocal = 0} prim[addrarray] prim[int] prim stub
80+
(array.set[addr] prim prim prim))
81+
eta_addr_unsafe_set =
82+
(function {nlocal = 0} prim[addrarray] prim[int] prim stub
83+
(array.unsafe_set[addr] prim prim prim)))
84+
(makeblock 0 int_a float_a addr_a eta_gen_len eta_gen_safe_get
85+
eta_gen_unsafe_get eta_gen_safe_set eta_gen_unsafe_set eta_int_len
86+
eta_int_safe_get eta_int_unsafe_get eta_int_safe_set
87+
eta_int_unsafe_set eta_float_len eta_float_safe_get
88+
eta_float_unsafe_get eta_float_safe_set eta_float_unsafe_set
89+
eta_addr_len eta_addr_safe_get eta_addr_unsafe_get
90+
eta_addr_safe_set eta_addr_unsafe_set)))))

testsuite/tests/translprim/array_spec.ml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@
33
** ocamlc.byte
44
flags = "-dlambda -dno-unique-ids"
55
*** flat-float-array
6-
**** check-ocamlc.byte-output
7-
compiler_reference =
8-
"${test_source_directory}/array_spec.compilers.flat.reference"
6+
**** stack-allocation
7+
***** check-ocamlc.byte-output
8+
compiler_reference =
9+
"${test_source_directory}/array_spec.stack.flat.reference"
10+
**** no-stack-allocation
11+
***** check-ocamlc.byte-output
12+
compiler_reference =
13+
"${test_source_directory}/array_spec.heap.flat.reference"
914
*** no-flat-float-array
1015
**** check-ocamlc.byte-output
11-
compiler_reference =
12-
"${test_source_directory}/array_spec.compilers.no-flat.reference"
16+
compiler_reference =
17+
"${test_source_directory}/array_spec.compilers.no-flat.reference"
1318
*)
1419

1520
external len : 'a array -> int = "%array_length"

0 commit comments

Comments
 (0)