Merge pull request #31 from e2e4b6b7/1.30

Fixes of x86_64 compiler
This commit is contained in:
danyaberezun 2025-02-28 12:06:36 +02:00 committed by GitHub
commit 1d8d7c4203
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
35 changed files with 85 additions and 97 deletions

View file

@ -24,7 +24,7 @@ runtime.o: runtime.c runtime.h
$(CC) $(PROD_FLAGS) -c runtime.c -o runtime.o $(CC) $(PROD_FLAGS) -c runtime.c -o runtime.o
printf.o: printf.S printf.o: printf.S
$(CC) $(PROD_FLAGS) -x assembler-with-cpp -c -g printf.S -o printf.o $(CC) $(PROD_FLAGS) -Wa,--noexecstack -x assembler-with-cpp -c -g printf.S -o printf.o
clean: clean:
$(RM) *.a *.o *~ negative_scenarios/*.err $(RM) *.a *.o *~ negative_scenarios/*.err

View file

@ -1427,7 +1427,7 @@ let compile cmd ((imports, _), p) =
| Expr.Ignore s -> | Expr.Ignore s ->
let ls, env = env#get_label in let ls, env = env#get_label in
add_code (compile_expr tail ls env s) ls false [ DROP ] add_code (compile_expr tail ls env s) ls false [ DROP ]
| Expr.ElemRef (x, i) -> compile_list tail l env [ x; i ] | Expr.ElemRef _ -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
| Expr.Var x -> ( | Expr.Var x -> (
let env, line = env#gen_line x in let env, line = env#gen_line x in
let env, acc = env#lookup x in let env, acc = env#lookup x in
@ -1438,10 +1438,7 @@ let compile cmd ((imports, _), p) =
false, false,
line @ [ PROTO (name, env#current_function) ] ) line @ [ PROTO (name, env#current_function) ] )
| _ -> (env, false, line @ [ LD acc ])) | _ -> (env, false, line @ [ LD acc ]))
| Expr.Ref x -> | Expr.Ref _ -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
let env, line = env#gen_line x in
let env, acc = env#lookup x in
(env, false, line @ [ LDA acc ])
| Expr.Const n -> (env, false, [ CONST n ]) | Expr.Const n -> (env, false, [ CONST n ])
| Expr.String s -> (env, false, [ STRING s ]) | Expr.String s -> (env, false, [ STRING s ])
| Expr.Binop (op, x, y) -> | Expr.Binop (op, x, y) ->
@ -1496,13 +1493,15 @@ let compile cmd ((imports, _), p) =
let env, line = env#gen_line x in let env, line = env#gen_line x in
let env, acc = env#lookup x in let env, acc = env#lookup x in
add_code (compile_expr false lassn env e) lassn false (line @ [ ST acc ]) add_code (compile_expr false lassn env e) lassn false (line @ [ ST acc ])
| Expr.Assign (x, e) -> | Expr.Assign (Expr.ElemRef (x, i), e) ->
let lassn, env = env#get_label in let lassn, env = env#get_label in
add_code add_code
(compile_list false lassn env [ x; e ]) (compile_list false lassn env [ x; i; e ])
lassn false lassn false
[ (match x with Expr.Ref _ -> STI | _ -> STA) ] [ STA ]
(*Expr.ElemRef _ -> STA | _ -> STI]*) | Expr.Assign (x, _) ->
failwith
(Printf.sprintf "Indirect assignment is not supported yet: %s" (show Expr.t x))
| Expr.Skip -> (env, false, []) | Expr.Skip -> (env, false, [])
| Expr.Seq (s1, s2) -> compile_list tail l env [ s1; s2 ] | Expr.Seq (s1, s2) -> compile_list tail l env [ s1; s2 ]
| Expr.If (c, s1, s2) -> | Expr.If (c, s1, s2) ->

View file

@ -260,10 +260,10 @@ let show env instr =
let in_memory = function M _ | S _ | I _ -> true | C _ | R _ | L _ -> false let in_memory = function M _ | S _ | I _ -> true | C _ | R _ | L _ -> false
let mov x s = let mov x s =
(* Numeric literals with more than 32 bits cannot ne directly moved to memory location *) (* Numeric literals with more than 32 bits cannot be directly moved to memory location *)
let big_numeric_literal = function L num -> num > 0xFFFFFFFF | _ -> false in let big_numeric_literal = function L num -> (num > 0xFFFFFFFF || num < -0xFFFFFFFF) | _ -> false in
if x = s then [] if x = s then []
else if (in_memory x && in_memory s) || big_numeric_literal x then else if (in_memory x && in_memory s) || (big_numeric_literal x && (in_memory x || in_memory s)) then
[ Mov (x, rax); Mov (rax, s) ] [ Mov (x, rax); Mov (rax, s) ]
else [ Mov (x, s) ] else [ Mov (x, s) ]
@ -691,16 +691,27 @@ let compile cmd env imports code =
(env, push_closure_code @ mov address l @ call_code) (env, push_closure_code @ mov address l @ call_code)
| CONST n -> | CONST n ->
let s, env' = env#allocate in let s, env' = env#allocate in
(env', [ Mov (L (box n), s) ]) (env', mov (L (box n)) s)
| STRING s -> | STRING s ->
let addr, env = env#string s in let addr, env = env#string s in
let l, env = env#allocate in let l, env = env#allocate in
let env, call = compile_call env ~fname:".string" 1 false in let env, call = compile_call env ~fname:".string" 1 false in
(env, mov addr l @ call) (env, mov addr l @ call)
| LDA x -> | LDA _ -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
(*
let s, env' = (env#variable x)#allocate in let s, env' = (env#variable x)#allocate in
let s', env'' = env'#allocate in let s', env'' = env'#allocate in
(env'', [ Lea (env'#loc x, rax); Mov (rax, s); Mov (rax, s') ]) let loc_x = env'#loc x in
match loc_x with
| R _ ->
failwith
"We are not able to take an address of a register. This \
is the known limitation of 64-bit compiler. If you \
encountered this issue, just do not use indirect \
assignment :("
| _ ->
();
(env'', [ Lea (loc_x, rax); Mov (rax, s); Mov (rax, s') ])*)
| LD x -> ( | LD x -> (
let s, env' = (env#variable x)#allocate in let s, env' = (env#variable x)#allocate in
( env', ( env',
@ -715,7 +726,8 @@ let compile cmd env imports code =
| S _ | M _ -> [ Mov (s, rax); Mov (rax, env'#loc x) ] | S _ | M _ -> [ Mov (s, rax); Mov (rax, env'#loc x) ]
| _ -> [ Mov (s, env'#loc x) ] )) | _ -> [ Mov (s, env'#loc x) ] ))
| STA -> compile_call env ~fname:".sta" 3 false | STA -> compile_call env ~fname:".sta" 3 false
| STI -> ( | STI -> failwith "Should not happen. Indirect assignemts are temporarily prohibited."
(*
let v, env = env#pop in let v, env = env#pop in
let x = env#peek in let x = env#peek in
( env, ( env,
@ -727,7 +739,7 @@ let compile cmd env imports code =
Mov (rdx, I (0, rax)); Mov (rdx, I (0, rax));
Mov (rdx, x); Mov (rdx, x);
] ]
| _ -> [ Mov (v, rax); Mov (rax, I (0, x)); Mov (rax, x) ] )) | _ -> [ Mov (v, rax); Mov (rax, I (0, x)); Mov (rax, x) ] )*)
| BINOP op -> compile_binop env op | BINOP op -> compile_binop env op
| LABEL s | FLABEL s | SLABEL s -> (env, [ Label s ]) | LABEL s | FLABEL s | SLABEL s -> (env, [ Label s ])
| JMP l -> ((env#set_stack l)#set_barrier, [ Jmp l ]) | JMP l -> ((env#set_stack l)#set_barrier, [ Jmp l ])
@ -972,23 +984,21 @@ let compile cmd env imports code =
1 false 1 false
| LINE line -> env#gen_line line | LINE line -> env#gen_line line
| FAIL ((line, col), value) -> | FAIL ((line, col), value) ->
let v, env = if value then (env#peek, env) else env#pop in let value, env = if value then (env#peek, env) else env#pop in
let msg_addr, env = env#string cmd#get_infile in let msg_addr, env = env#string cmd#get_infile in
let vr, env = env#allocate in let value_arg_addr, env = env#allocate in
let sr, env = env#allocate in let msg_arg_addr, env = env#allocate in
let liner, env = env#allocate in let line_arg_addr, env = env#allocate in
let colr, env = env#allocate in let col_arg_addr, env = env#allocate in
let env, code = let env, code =
compile_call env ~fname:".match_failure" 4 false compile_call env ~fname:".match_failure" 4 false
in in
let _, env = env#pop in let _, env = env#pop in
( env, ( env,
[ mov (L col) col_arg_addr
Mov (L col, colr); @ mov (L line) line_arg_addr
Mov (L line, liner); @ mov msg_addr msg_arg_addr
Mov (msg_addr, sr); @ mov value value_arg_addr
Mov (v, vr);
]
@ code ) @ code )
| i -> | i ->
invalid_arg invalid_arg
@ -1304,6 +1314,10 @@ class env prg mode =
Buffer.add_char buf '\\'; Buffer.add_char buf '\\';
Buffer.add_char buf 't'; Buffer.add_char buf 't';
iterate (i + 2) iterate (i + 2)
| 'r' ->
Buffer.add_char buf '\\';
Buffer.add_char buf 'r';
iterate (i + 2)
| _ -> | _ ->
Buffer.add_char buf '\\'; Buffer.add_char buf '\\';
Buffer.add_char buf '\\'; Buffer.add_char buf '\\';
@ -1474,8 +1488,8 @@ let build cmd prog =
in in
let compiler_flags, linker_flags = let compiler_flags, linker_flags =
match cmd#target_os with match cmd#target_os with
| Darwin -> ("-arch x86_64", "-ld_classic") | Darwin -> ("-arch x86_64 -Wa,--noexecstack", "-ld_classic")
| Linux -> ("", "") | Linux -> ("-Wa,--noexecstack", "")
in in
let debug_flags = if cmd#is_debug then "-g" else "" in let debug_flags = if cmd#is_debug then "-g" else "" in
match cmd#get_mode with match cmd#get_mode with
@ -1493,11 +1507,17 @@ let build cmd prog =
(Buffer.contents buf) cmd#get_runtime_path (Buffer.contents buf) cmd#get_runtime_path
(match cmd#march with `X86_32 -> "runtime32" | `AMD64 -> "runtime") (match cmd#march with `X86_32 -> "runtime32" | `AMD64 -> "runtime")
in in
Sys.command gcc_cmdline let result = Sys.command gcc_cmdline in
if result <> 0 then
failwith
(Printf.sprintf "Assembly compiler failed with exit code %d" result)
| `Compile -> | `Compile ->
let cmd = let cmd =
Printf.sprintf "%s %s %s -c -g %s.s" compiler compiler_flags debug_flags Printf.sprintf "%s %s %s -c -g %s.s" compiler compiler_flags debug_flags
cmd#basename cmd#basename
in in
Sys.command cmd let result = Sys.command cmd in
if result <> 0 then
failwith
(Printf.sprintf "Assembly compiler failed with exit code %d" result)
| _ -> invalid_arg "must not happen" | _ -> invalid_arg "must not happen"

View file

@ -42,7 +42,7 @@ let () =
if Sys.file_exists !lama_file && i <> 30 then ( if Sys.file_exists !lama_file && i <> 30 then (
(* cram_printfn " $ ls ../x64"; *) (* cram_printfn " $ ls ../x64"; *)
cram_printfn cram_printfn
" $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test%02d.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack'" i; " $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test%02d.lama -o test" i;
cram_printfn " $ ./test"; cram_printfn " $ ./test";
true) true)
else false else false

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test01.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test01.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Set internal structure: MNode (63, 1, 0, MNode (31, 1, 0, MNode (15, 1, 0, MNode (7, 1, 0, MNode (3, 1, 0, MNode (1, 1, 0, MNode (0, 1, 0, 0, 0), MNode (2, 1, 0, 0, 0)), MNode (5, 1, 0, MNode (4, 1, 0, 0, 0), MNode (6, 1, 0, 0, 0))), MNode (11, 1, 0, MNode (9, 1, 0, MNode (8, 1, 0, 0, 0), MNode (10, 1, 0, 0, 0)), MNode (13, 1, 0, MNode (12, 1, 0, 0, 0), MNode (14, 1, 0, 0, 0)))), MNode (23, 1, 0, MNode (19, 1, 0, MNode (17, 1, 0, MNode (16, 1, 0, 0, 0), MNode (18, 1, 0, 0, 0)), MNode (21, 1, 0, MNode (20, 1, 0, 0, 0), MNode (22, 1, 0, 0, 0))), MNode (27, 1, 0, MNode (25, 1, 0, MNode (24, 1, 0, 0, 0), MNode (26, 1, 0, 0, 0)), MNode (29, 1, 0, MNode (28, 1, 0, 0, 0), MNode (30, 1, 0, 0, 0))))), MNode (47, 1, 0, MNode (39, 1, 0, MNode (35, 1, 0, MNode (33, 1, 0, MNode (32, 1, 0, 0, 0), MNode (34, 1, 0, 0, 0)), MNode (37, 1, 0, MNode (36, 1, 0, 0, 0), MNode (38, 1, 0, 0, 0))), MNode (43, 1, 0, MNode (41, 1, 0, MNode (40, 1, 0, 0, 0), MNode (42, 1, 0, 0, 0)), MNode (45, 1, 0, MNode (44, 1, 0, 0, 0), MNode (46, 1, 0, 0, 0)))), MNode (55, 1, 0, MNode (51, 1, 0, MNode (49, 1, 0, MNode (48, 1, 0, 0, 0), MNode (50, 1, 0, 0, 0)), MNode (53, 1, 0, MNode (52, 1, 0, 0, 0), MNode (54, 1, 0, 0, 0))), MNode (59, 1, 0, MNode (57, 1, 0, MNode (56, 1, 0, 0, 0), MNode (58, 1, 0, 0, 0)), MNode (61, 1, 0, MNode (60, 1, 0, 0, 0), MNode (62, 1, 0, 0, 0)))))), MNode (79, 1, -1, MNode (71, 1, 0, MNode (67, 1, 0, MNode (65, 1, 0, MNode (64, 1, 0, 0, 0), MNode (66, 1, 0, 0, 0)), MNode (69, 1, 0, MNode (68, 1, 0, 0, 0), MNode (70, 1, 0, 0, 0))), MNode (75, 1, 0, MNode (73, 1, 0, MNode (72, 1, 0, 0, 0), MNode (74, 1, 0, 0, 0)), MNode (77, 1, 0, MNode (76, 1, 0, 0, 0), MNode (78, 1, 0, 0, 0)))), MNode (87, 1, -1, MNode (83, 1, 0, MNode (81, 1, 0, MNode (80, 1, 0, 0, 0), MNode (82, 1, 0, 0, 0)), MNode (85, 1, 0, MNode (84, 1, 0, 0, 0), MNode (86, 1, 0, 0, 0))), MNode (95, 1, 0, MNode (91, 1, 0, MNode (89, 1, 0, MNode (88, 1, 0, 0, 0), MNode (90, 1, 0, 0, 0)), MNode (93, 1, 0, MNode (92, 1, 0, 0, 0), MNode (94, 1, 0, 0, 0))), MNode (97, 1, -1, MNode (96, 1, 0, 0, 0), MNode (98, 1, -1, 0, MNode (99, 1, 0, 0, 0))))))) Set internal structure: MNode (63, 1, 0, MNode (31, 1, 0, MNode (15, 1, 0, MNode (7, 1, 0, MNode (3, 1, 0, MNode (1, 1, 0, MNode (0, 1, 0, 0, 0), MNode (2, 1, 0, 0, 0)), MNode (5, 1, 0, MNode (4, 1, 0, 0, 0), MNode (6, 1, 0, 0, 0))), MNode (11, 1, 0, MNode (9, 1, 0, MNode (8, 1, 0, 0, 0), MNode (10, 1, 0, 0, 0)), MNode (13, 1, 0, MNode (12, 1, 0, 0, 0), MNode (14, 1, 0, 0, 0)))), MNode (23, 1, 0, MNode (19, 1, 0, MNode (17, 1, 0, MNode (16, 1, 0, 0, 0), MNode (18, 1, 0, 0, 0)), MNode (21, 1, 0, MNode (20, 1, 0, 0, 0), MNode (22, 1, 0, 0, 0))), MNode (27, 1, 0, MNode (25, 1, 0, MNode (24, 1, 0, 0, 0), MNode (26, 1, 0, 0, 0)), MNode (29, 1, 0, MNode (28, 1, 0, 0, 0), MNode (30, 1, 0, 0, 0))))), MNode (47, 1, 0, MNode (39, 1, 0, MNode (35, 1, 0, MNode (33, 1, 0, MNode (32, 1, 0, 0, 0), MNode (34, 1, 0, 0, 0)), MNode (37, 1, 0, MNode (36, 1, 0, 0, 0), MNode (38, 1, 0, 0, 0))), MNode (43, 1, 0, MNode (41, 1, 0, MNode (40, 1, 0, 0, 0), MNode (42, 1, 0, 0, 0)), MNode (45, 1, 0, MNode (44, 1, 0, 0, 0), MNode (46, 1, 0, 0, 0)))), MNode (55, 1, 0, MNode (51, 1, 0, MNode (49, 1, 0, MNode (48, 1, 0, 0, 0), MNode (50, 1, 0, 0, 0)), MNode (53, 1, 0, MNode (52, 1, 0, 0, 0), MNode (54, 1, 0, 0, 0))), MNode (59, 1, 0, MNode (57, 1, 0, MNode (56, 1, 0, 0, 0), MNode (58, 1, 0, 0, 0)), MNode (61, 1, 0, MNode (60, 1, 0, 0, 0), MNode (62, 1, 0, 0, 0)))))), MNode (79, 1, -1, MNode (71, 1, 0, MNode (67, 1, 0, MNode (65, 1, 0, MNode (64, 1, 0, 0, 0), MNode (66, 1, 0, 0, 0)), MNode (69, 1, 0, MNode (68, 1, 0, 0, 0), MNode (70, 1, 0, 0, 0))), MNode (75, 1, 0, MNode (73, 1, 0, MNode (72, 1, 0, 0, 0), MNode (74, 1, 0, 0, 0)), MNode (77, 1, 0, MNode (76, 1, 0, 0, 0), MNode (78, 1, 0, 0, 0)))), MNode (87, 1, -1, MNode (83, 1, 0, MNode (81, 1, 0, MNode (80, 1, 0, 0, 0), MNode (82, 1, 0, 0, 0)), MNode (85, 1, 0, MNode (84, 1, 0, 0, 0), MNode (86, 1, 0, 0, 0))), MNode (95, 1, 0, MNode (91, 1, 0, MNode (89, 1, 0, MNode (88, 1, 0, 0, 0), MNode (90, 1, 0, 0, 0)), MNode (93, 1, 0, MNode (92, 1, 0, 0, 0), MNode (94, 1, 0, 0, 0))), MNode (97, 1, -1, MNode (96, 1, 0, 0, 0), MNode (98, 1, -1, 0, MNode (99, 1, 0, 0, 0)))))))
Set elements: {0, 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} Set elements: {0, 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}

View file

@ -1,5 +1,4 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test02.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test02.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Assn ("x", Dec ("3")) Assn ("x", Dec ("3"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test03.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test03.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
-1 -1
1 1

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test04.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test04.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Map internal structure: MNode (63, {630}, 0, MNode (31, {310}, 0, MNode (15, {150}, 0, MNode (7, {70}, 0, MNode (3, {30}, 0, MNode (1, {10}, 0, MNode (0, {0}, 0, 0, 0), MNode (2, {20}, 0, 0, 0)), MNode (5, {50}, 0, MNode (4, {40}, 0, 0, 0), MNode (6, {60}, 0, 0, 0))), MNode (11, {110}, 0, MNode (9, {90}, 0, MNode (8, {80}, 0, 0, 0), MNode (10, {100}, 0, 0, 0)), MNode (13, {130}, 0, MNode (12, {120}, 0, 0, 0), MNode (14, {140}, 0, 0, 0)))), MNode (23, {230}, 0, MNode (19, {190}, 0, MNode (17, {170}, 0, MNode (16, {160}, 0, 0, 0), MNode (18, {180}, 0, 0, 0)), MNode (21, {210}, 0, MNode (20, {200}, 0, 0, 0), MNode (22, {220}, 0, 0, 0))), MNode (27, {270}, 0, MNode (25, {250}, 0, MNode (24, {240}, 0, 0, 0), MNode (26, {260}, 0, 0, 0)), MNode (29, {290}, 0, MNode (28, {280}, 0, 0, 0), MNode (30, {300}, 0, 0, 0))))), MNode (47, {470}, 0, MNode (39, {390}, 0, MNode (35, {350}, 0, MNode (33, {330}, 0, MNode (32, {320}, 0, 0, 0), MNode (34, {340}, 0, 0, 0)), MNode (37, {370}, 0, MNode (36, {360}, 0, 0, 0), MNode (38, {380}, 0, 0, 0))), MNode (43, {430}, 0, MNode (41, {410}, 0, MNode (40, {400}, 0, 0, 0), MNode (42, {420}, 0, 0, 0)), MNode (45, {450}, 0, MNode (44, {440}, 0, 0, 0), MNode (46, {460}, 0, 0, 0)))), MNode (55, {550}, 0, MNode (51, {510}, 0, MNode (49, {490}, 0, MNode (48, {480}, 0, 0, 0), MNode (50, {500}, 0, 0, 0)), MNode (53, {530}, 0, MNode (52, {520}, 0, 0, 0), MNode (54, {540}, 0, 0, 0))), MNode (59, {590}, 0, MNode (57, {570}, 0, MNode (56, {560}, 0, 0, 0), MNode (58, {580}, 0, 0, 0)), MNode (61, {610}, 0, MNode (60, {600}, 0, 0, 0), MNode (62, {620}, 0, 0, 0)))))), MNode (79, {790}, -1, MNode (71, {710}, 0, MNode (67, {670}, 0, MNode (65, {650}, 0, MNode (64, {640}, 0, 0, 0), MNode (66, {660}, 0, 0, 0)), MNode (69, {690}, 0, MNode (68, {680}, 0, 0, 0), MNode (70, {700}, 0, 0, 0))), MNode (75, {750}, 0, MNode (73, {730}, 0, MNode (72, {720}, 0, 0, 0), MNode (74, {740}, 0, 0, 0)), MNode (77, {770}, 0, MNode (76, {760}, 0, 0, 0), MNode (78, {780}, 0, 0, 0)))), MNode (87, {870}, -1, MNode (83, {830}, 0, MNode (81, {810}, 0, MNode (80, {800}, 0, 0, 0), MNode (82, {820}, 0, 0, 0)), MNode (85, {850}, 0, MNode (84, {840}, 0, 0, 0), MNode (86, {860}, 0, 0, 0))), MNode (95, {950}, 0, MNode (91, {910}, 0, MNode (89, {890}, 0, MNode (88, {880}, 0, 0, 0), MNode (90, {900}, 0, 0, 0)), MNode (93, {930}, 0, MNode (92, {920}, 0, 0, 0), MNode (94, {940}, 0, 0, 0))), MNode (97, {970}, -1, MNode (96, {960}, 0, 0, 0), MNode (98, {980}, -1, 0, MNode (99, {990}, 0, 0, 0))))))) Map internal structure: MNode (63, {630}, 0, MNode (31, {310}, 0, MNode (15, {150}, 0, MNode (7, {70}, 0, MNode (3, {30}, 0, MNode (1, {10}, 0, MNode (0, {0}, 0, 0, 0), MNode (2, {20}, 0, 0, 0)), MNode (5, {50}, 0, MNode (4, {40}, 0, 0, 0), MNode (6, {60}, 0, 0, 0))), MNode (11, {110}, 0, MNode (9, {90}, 0, MNode (8, {80}, 0, 0, 0), MNode (10, {100}, 0, 0, 0)), MNode (13, {130}, 0, MNode (12, {120}, 0, 0, 0), MNode (14, {140}, 0, 0, 0)))), MNode (23, {230}, 0, MNode (19, {190}, 0, MNode (17, {170}, 0, MNode (16, {160}, 0, 0, 0), MNode (18, {180}, 0, 0, 0)), MNode (21, {210}, 0, MNode (20, {200}, 0, 0, 0), MNode (22, {220}, 0, 0, 0))), MNode (27, {270}, 0, MNode (25, {250}, 0, MNode (24, {240}, 0, 0, 0), MNode (26, {260}, 0, 0, 0)), MNode (29, {290}, 0, MNode (28, {280}, 0, 0, 0), MNode (30, {300}, 0, 0, 0))))), MNode (47, {470}, 0, MNode (39, {390}, 0, MNode (35, {350}, 0, MNode (33, {330}, 0, MNode (32, {320}, 0, 0, 0), MNode (34, {340}, 0, 0, 0)), MNode (37, {370}, 0, MNode (36, {360}, 0, 0, 0), MNode (38, {380}, 0, 0, 0))), MNode (43, {430}, 0, MNode (41, {410}, 0, MNode (40, {400}, 0, 0, 0), MNode (42, {420}, 0, 0, 0)), MNode (45, {450}, 0, MNode (44, {440}, 0, 0, 0), MNode (46, {460}, 0, 0, 0)))), MNode (55, {550}, 0, MNode (51, {510}, 0, MNode (49, {490}, 0, MNode (48, {480}, 0, 0, 0), MNode (50, {500}, 0, 0, 0)), MNode (53, {530}, 0, MNode (52, {520}, 0, 0, 0), MNode (54, {540}, 0, 0, 0))), MNode (59, {590}, 0, MNode (57, {570}, 0, MNode (56, {560}, 0, 0, 0), MNode (58, {580}, 0, 0, 0)), MNode (61, {610}, 0, MNode (60, {600}, 0, 0, 0), MNode (62, {620}, 0, 0, 0)))))), MNode (79, {790}, -1, MNode (71, {710}, 0, MNode (67, {670}, 0, MNode (65, {650}, 0, MNode (64, {640}, 0, 0, 0), MNode (66, {660}, 0, 0, 0)), MNode (69, {690}, 0, MNode (68, {680}, 0, 0, 0), MNode (70, {700}, 0, 0, 0))), MNode (75, {750}, 0, MNode (73, {730}, 0, MNode (72, {720}, 0, 0, 0), MNode (74, {740}, 0, 0, 0)), MNode (77, {770}, 0, MNode (76, {760}, 0, 0, 0), MNode (78, {780}, 0, 0, 0)))), MNode (87, {870}, -1, MNode (83, {830}, 0, MNode (81, {810}, 0, MNode (80, {800}, 0, 0, 0), MNode (82, {820}, 0, 0, 0)), MNode (85, {850}, 0, MNode (84, {840}, 0, 0, 0), MNode (86, {860}, 0, 0, 0))), MNode (95, {950}, 0, MNode (91, {910}, 0, MNode (89, {890}, 0, MNode (88, {880}, 0, 0, 0), MNode (90, {900}, 0, 0, 0)), MNode (93, {930}, 0, MNode (92, {920}, 0, 0, 0), MNode (94, {940}, 0, 0, 0))), MNode (97, {970}, -1, MNode (96, {960}, 0, 0, 0), MNode (98, {980}, -1, 0, MNode (99, {990}, 0, 0, 0)))))))
Map elements: {[0, 0], [1, 10], [2, 20], [3, 30], [4, 40], [5, 50], [6, 60], [7, 70], [8, 80], [9, 90], [10, 100], [11, 110], [12, 120], [13, 130], [14, 140], [15, 150], [16, 160], [17, 170], [18, 180], [19, 190], [20, 200], [21, 210], [22, 220], [23, 230], [24, 240], [25, 250], [26, 260], [27, 270], [28, 280], [29, 290], [30, 300], [31, 310], [32, 320], [33, 330], [34, 340], [35, 350], [36, 360], [37, 370], [38, 380], [39, 390], [40, 400], [41, 410], [42, 420], [43, 430], [44, 440], [45, 450], [46, 460], [47, 470], [48, 480], [49, 490], [50, 500], [51, 510], [52, 520], [53, 530], [54, 540], [55, 550], [56, 560], [57, 570], [58, 580], [59, 590], [60, 600], [61, 610], [62, 620], [63, 630], [64, 640], [65, 650], [66, 660], [67, 670], [68, 680], [69, 690], [70, 700], [71, 710], [72, 720], [73, 730], [74, 740], [75, 750], [76, 760], [77, 770], [78, 780], [79, 790], [80, 800], [81, 810], [82, 820], [83, 830], [84, 840], [85, 850], [86, 860], [87, 870], [88, 880], [89, 890], [90, 900], [91, 910], [92, 920], [93, 930], [94, 940], [95, 950], [96, 960], [97, 970], [98, 980], [99, 990]} Map elements: {[0, 0], [1, 10], [2, 20], [3, 30], [4, 40], [5, 50], [6, 60], [7, 70], [8, 80], [9, 90], [10, 100], [11, 110], [12, 120], [13, 130], [14, 140], [15, 150], [16, 160], [17, 170], [18, 180], [19, 190], [20, 200], [21, 210], [22, 220], [23, 230], [24, 240], [25, 250], [26, 260], [27, 270], [28, 280], [29, 290], [30, 300], [31, 310], [32, 320], [33, 330], [34, 340], [35, 350], [36, 360], [37, 370], [38, 380], [39, 390], [40, 400], [41, 410], [42, 420], [43, 430], [44, 440], [45, 450], [46, 460], [47, 470], [48, 480], [49, 490], [50, 500], [51, 510], [52, 520], [53, 530], [54, 540], [55, 550], [56, 560], [57, 570], [58, 580], [59, 590], [60, 600], [61, 610], [62, 620], [63, 630], [64, 640], [65, 650], [66, 660], [67, 670], [68, 680], [69, 690], [70, 700], [71, 710], [72, 720], [73, 730], [74, 740], [75, 750], [76, 760], [77, 770], [78, 780], [79, 790], [80, 800], [81, 810], [82, 820], [83, 830], [84, 840], [85, 850], [86, 860], [87, 870], [88, 880], [89, 890], [90, 900], [91, 910], [92, 920], [93, 930], [94, 940], [95, 950], [96, 960], [97, 970], [98, 980], [99, 990]}

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test05.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test05.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Cached: 1 Cached: 1
Cached: 1 Cached: 1

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test06.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test06.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Flattening: 0 Flattening: 0
Flattening: {0, 0, 0, 0} Flattening: {0, 0, 0, 0}

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test07.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test07.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
HashTab internal structure: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {[{1, 2, 3}, 100]}, 0, 0, 0] HashTab internal structure: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {[{1, 2, 3}, 100]}, 0, 0, 0]
HashTab internal structure: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {[{1, 2, 3}, 200], [{1, 2, 3}, 100]}, 0, 0, 0] HashTab internal structure: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {[{1, 2, 3}, 200], [{1, 2, 3}, 100]}, 0, 0, 0]

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test08.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test08.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
6 6
120 120

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test09.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test09.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Parsing a*| against "aa"... Succ ({"a", "a"}) Parsing a*| against "aa"... Succ ({"a", "a"})
Parsing a+| against "aa"... Succ ({"a", "a"}) Parsing a+| against "aa"... Succ ({"a", "a"})

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test10.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test10.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Parsing "aaa" with many ... Succ ({"a", "a", "a"}) Parsing "aaa" with many ... Succ ({"a", "a", "a"})
Parsing "ab" with bad_alter ... Succ ("ab") Parsing "ab" with bad_alter ... Succ ("ab")

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test11.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test11.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ ("a") Succ ("a")
Succ (Add ("a", "a")) Succ (Add ("a", "a"))

View file

@ -1,5 +1,4 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test12.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test12.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul ("a", "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a")) Succ (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul (Mul ("a", "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"), "a"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test13.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test13.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Add ("a", Sub ("a", "a"))) Succ (Add ("a", Sub ("a", "a")))
Succ (Mul (Div (Mul ("a", "a"), "a"), "a")) Succ (Mul (Div (Mul ("a", "a"), "a"), "a"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test14.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test14.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Add ("a", Sub ("a", "a"))) Succ (Add ("a", Sub ("a", "a")))
Succ (Mul (Div (Mul ("a", "a"), "a"), "a")) Succ (Mul (Div (Mul ("a", "a"), "a"), "a"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test15.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test15.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Eq ("a", "a")) Succ (Eq ("a", "a"))
Succ (Eq (Mul ("a", "a"), Mul ("a", "a"))) Succ (Eq (Mul ("a", "a"), Mul ("a", "a")))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test16.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test16.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Eq ("a", "a")) Succ (Eq ("a", "a"))
Succ (Eq ("b", "b")) Succ (Eq ("b", "b"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test17.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test17.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Lazy body: 0 Lazy body: 0
Lazy body: 1 Lazy body: 1

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test18.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test18.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
1 =?= 1 = 0 1 =?= 1 = 0
symmetricity: ok symmetricity: ok

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test20.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test20.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Empty Empty
Node (0, Empty, Empty) Node (0, Empty, Empty)

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test21.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test21.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
1 1
1 1

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test22.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test22.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
0 0
{1, 2, 3, 4} {1, 2, 3, 4}

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test23.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test23.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
1 1
{2, 3, 4} {2, 3, 4}

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test24.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test24.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
3 3
{1} {1}

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test25.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test25.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Cloning int: 5 Cloning int: 5
Cloning string: abc Cloning string: abc

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test26.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test26.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Number of commands-line arguments: 1 Number of commands-line arguments: 1
arg [0 ] = "./test" arg [0 ] = "./test"

View file

@ -1,5 +1,4 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test27.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test27.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Yes Yes

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test28.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test28.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Seq ("a", "b")) Succ (Seq ("a", "b"))
Succ (Alt ("a")) Succ (Alt ("a"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test29.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test29.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Succ (Seq ("a", "b")) Succ (Seq ("a", "b"))
Succ (Alt ("a")) Succ (Alt ("a"))

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test32.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test32.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
Flattening: 0 Flattening: 0
Flattening: {A, B, C, D} Flattening: {A, B, C, D}

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test33.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test33.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
{}.string: 0 {}.string: 0
{}.stringcat: {}.stringcat:

View file

@ -1,6 +1,5 @@
This file was autogenerated. This file was autogenerated.
$ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test34.lama -o test 2>&1 | grep -v 'missing .note.GNU-stack' $ ../../src/Driver.exe -runtime ../../runtime -I ../../runtime -I ../../stdlib/x64 -ds -dp test34.lama -o test
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
$ ./test $ ./test
' " ` % \ \r ' " ` % \
\h @ $ # ; [ ] \h @ $ # ; [ ]