added missing @symbol_tracker.use on MIPS
[voodoo-lang.git] / test / many-args-tail.voo
blob15a0dcb980436603ad3abcca3872707c6012b2e1
1 #### Test tail calls using many arguments
3 section data
5 argc_format: string "argc: %d\n\x00"
6 format: string "many_args_tail: %d\n\x00"
9 section functions
10 import printf
11 export main
13 align
14 many_args_tail:
15 function count a b c d e f g h i j k l m n o p q r s t
17     let result 0
18     ifle count 0
19         set result add result a
20         set result add result b
21         set result add result c
22         set result add result d
23         set result add result e
24         set result add result f
25         set result add result g
26         set result add result h
27         set result add result i
28         set result add result j
29         set result add result k
30         set result add result l
31         set result add result m
32         set result add result n
33         set result add result o
34         set result add result p
35         set result add result q
36         set result add result r
37         set result add result s
38         set result add result t
39         return result
40     end if
42     let newcount sub count 1
43     let newa add a 1
44     let newb add b 1
45     let newc add c 1
46     let newd add d 1
47     let newe add e 1
48     let newf add f 1
49     let newg add g 1
50     let newh add h 1
51     let newi add i 1
52     let newj add j 1
53     let newk add k 1
54     let newl add l 1
55     let newm add m 1
56     let newn add n 1
57     let newo add o 1
58     let newp add p 1
59     let newq add q 1
60     let newr add r 1
61     let news add s 1
62     let newt add t 1
64     tail-call many_args_tail newcount newa newb newc newd newe newf newg newh \
65               newi newj newk newl newm newn newo newp newq newr news newt
66 end function
68 align
69 main:
70 function argc argv
71     call printf argc_format argc
72     let x call many_args_tail 1000000 1 2 3 4 5 6 7 8 9 10 11 \
73                               12 13 14 15 16 17 18 19 20
74     call printf format x
75     call printf argc_format argc
77     return 0
78 end function