# LLVM: `lli` tool

### NAME

`lli`

### SYNOPSIS

`lli [options] [filename] [args ...]`

### DESCRIPTION

`lli` directly executes programs in LLVM format. It takes a program in LLVM bytecode format and executes it using a just-in-time compiler, if one is available for the current architecture, or an interpreter. `lli` takes all of the same code generator options as the `llc` tool, but they are only applicable when the just-in-time compiler is being used.

If filename is not specified, then `lli` reads the LLVM bytecode for the program from standard input.

The optional "args" specified on the command line are passed to the program as arguments.

### OPTIONS

- `-array-checks`
  Enable array bound checks. If an LLVM program attempts to access an element of an array which is not within the size of that array, `lli` will print an error message and call `abort(3)`. This is presently only applicable to the interpreter.

- `-help`
  Print a summary of command line options.

- `-stats`
  Print statistics from the code-generation passes. This is only meaningful for the just-in-time compiler, at present.

- `-time-passes`
  Record the amount of time needed for each code-generation pass and print it to standard error.

- `-march=<arch>`
  Use the specified non-default architecture when selecting a code generator for the just-in-time compiler. This may result in a crash if you pick an architecture which is not compatible with the hardware you are running `lli` on.

- `-quiet, -q`
  Do not print any output about the return values of functions. This is presently only applicable to the interpreter.

- `-force-interpreter={false,true}`
  If set to true, use the interpreter even if a just-in-time compiler is available for this architecture. Defaults to false.

- `-trace`
  Print an LLVM-instruction-level dynamic execution trace. This is presently only applicable to the interpreter.

- `-f=<name>`
  Call the function named `<name>` to start the program. Note: The function is assumed to have the C signature `int `<name>` (int, char **, char **)`. If you try to use this option to call a function of incompatible type, undefined behavior may result. Defaults to "main".

### EXIT STATUS

If `lli` fails to load the program, it will exit with an exit code of 1. Otherwise, it will return the exit code of the program it executes.

### SEE ALSO

`llc`

Maintained by the LLVM Team.