# LLVM: `llvmgcc` tool

### NAME

`llvmgcc`

### SYNOPSIS

`llvmgcc [options] filename`

### DESCRIPTION

The `llvmgcc` command is the LLVM C front end. It is a modified version of the GNU Compiler Collection (GCC) that takes C programs and compiles them into LLVM bytecode or assembly language, depending upon the options.

Unless the `-S` option is specified, `llvmgcc` will use the `gccas` program to perform some optimizations and create an LLVM bytecode file. Unless the `-c` option is specified, `llvmgcc` will also use the `gccld` program to perform further optimizations and link the resulting bytecode file(s) with support libraries to create an executable program.

Being derived from GCC, llvmgcc has many of GCC's features and accepts most of GCC's options. It handles a number of GCC's extensions to the C programming language.

Below you will find several commonly used options:

### OPTIONS

- -S
  Do not generate an LLVM bytecode file. Rather, compile the source file into an LLVM assembly language file.

- -c
  Do not generate a linked bytecode executable. Rather, compile the source file into an LLVM bytecode file. This bytecode file can then be linked with other bytecode files later to generate a full LLVM executable.

- -o filename
  Specify the output file to be filename.

- -I directory
  Add a directory to the header file search path. This option can be repeated.

- -L directory
  Add directory to the library search path. This option can be repeated.

- -lname
  Link in the library libname.[bc | a | so]. This library should be a bytecode library.

- -Wl,option
  Pass option to the linker program, `gccld`.

### EXIT STATUS

If `llvmgcc` succeeds, it will exit with 0. Otherwise, if an error occurs, it will exit with a non-zero value.

### SEE ALSO

`llvmg++`, `gccas`, `gccld`, and the Info documentation for `gcc`.

Maintained by the LLVM Team.