TC-I Samples
let
function sub(i: int, j: int) :int = i + j
in
sub(1, 2)
end
In this sample all function calls to sub
can be inlined, i.e. replaced by
the function body.
$ tc -X --inline -A sub.tig
/* == Abstract Syntax Tree. == */
function _main() =
(
let
function sub_2(i_0 : int, j_1 : int) : int =
i_0 + j_1
in
let
var i_0 : int := 1
var j_1 : int := 2
var res : int := i_0 + j_1
in
res
end
end;
()
)
$ echo $?
0
The function call sub(1, 2)
has been effectively replaced. Take care with
nested function calls, note the variables in the inlined block.
Now that sub
is inlined and no longer used, it can be pruned.
$ tc -X --inline --prune -A sub.tig
/* == Abstract Syntax Tree. == */
function _main() =
(
let
in
let
var i_0 : int := 1
var j_1 : int := 2
var res : int := i_0 + j_1
in
res
end
end;
()
)
$ echo $?
0
Recursive functions cannot be inlined.