Executing LLVM bitcode
In this recipe, you will execute the LLVM bitcode that was generated in previous recipes.
Getting ready
To execute the LLVM bitcode, you need the lli
tool.
How to do it...
We saw in the previous recipe how to create a single bitstream file after linking the two .bc
files with one referencing the other to define func
. By invoking the lli
command in the following way, we can execute the output.bc
file generated. It will display the output on the standard output:
| $ lli output.bc number is 10
The output.bc
file is the input to lli
, which will execute the bitcode file and display the output, if any, on the standard output. Here the output is generated as number is 10
, which is a result of the execution of the output.bc
file formed by linking test1.c
and test2.c
in the previous recipe. The main function in the test2.c
file calls the function func
in the test1.c
file with integer 5 as the argument to the function. The func
function doubles the input argument and returns the result to main the function that outputs it on the standard output.
How it works...
The lli
tool command executes the program present in LLVM bitcode format. It takes the input in LLVM bitcode format and executes it using a just-in-time compiler, if there is one available for the architecture, or an interpreter.
If lli
is making use of a just-in-time compiler, then it effectively takes all the code generator options as that of llc
.
See also
- The Adding JIT support for a language recipe in Chapter 3, Extending the Frontend and Adding JIT support.