---
name: "llvm-extract-19"
section: "1"
platform: "linux"
package: "llvm-19"
version: "1:19.1.7-3+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/llvm-extract-19"
---

# llvm-extract-19(1)

extract a function from an LLVM module

## NAME

llvm-extract - extract a function from an LLVM module

## SYNOPSIS

**llvm-extract** \[*options*\] **--func** *function-name* \[*filename*\]

## DESCRIPTION

The **llvm-extract** command takes the name of a function and extracts it from the specified LLVM bitcode file.  It is primarily used as a debugging tool to reduce test cases from larger programs that are triggering a bug.

In addition to extracting the bitcode of the specified function, **llvm-extract** will also remove unreachable global variables, prototypes, and unused types.

The **llvm-extract** command reads its input from standard input if filename is omitted or if filename is **-**.  The output is always written to standard output, unless the **-o** option is specified (see below).

## OPTIONS

- **--alias** *alias-name*

  Extract the alias named *function-name* from the LLVM bitcode.  May be specified multiple times to extract multiple alias at once.

- **--ralias** *alias-regular-expr*

  Extract the alias matching *alias-regular-expr* from the LLVM bitcode. All alias matching the regular expression will be extracted.  May be specified multiple times.

- **--bb** *basic-block-specifier*

  Extract basic blocks(s) specified in *basic-block-specifier*. May be specified multiple times. Each \<function:bb\[;bb\]\> specifier pair will create a function. If multiple basic blocks are specified in one pair, the first block in the sequence should dominate the rest.

- **--delete**

  Delete specified Globals from Module.

- **-f**

  Enable binary output on terminals.  Normally, **llvm-extract** will refuse to write raw bitcode output if the output stream is a terminal.  With this option, **llvm-extract** will write raw bitcode regardless of the output device.

- **--func** *function-name*

  Extract the function named *function-name* from the LLVM bitcode.  May be specified multiple times to extract multiple functions at once.

- **--rfunc** *function-regular-expr*

  Extract the function(s) matching *function-regular-expr* from the LLVM bitcode. All functions matching the regular expression will be extracted.  May be specified multiple times.

- **--glob** *global-name*

  Extract the global variable named *global-name* from the LLVM bitcode.  May be specified multiple times to extract multiple global variables at once.

- **--rglob** *glob-regular-expr*

  Extract the global variable(s) matching *global-regular-expr* from the LLVM bitcode.  All global variables matching the regular expression will be extracted.  May be specified multiple times.

- **--keep-const-init**

  Preserve the values of constant globals.

- **--recursive**

  Recursively extract all called functions

- **-help**

  Print a summary of command line options.

- **-o** *filename*

  Specify the output filename.  If filename is "-" (the default), then **llvm-extract** sends its output to standard output.

- **-S**

  Write output in LLVM intermediate language (instead of bitcode).

## EXIT STATUS

If **llvm-extract** succeeds, it will exit with 0.  Otherwise, if an error occurs, it will exit with a non-zero value.

## SEE ALSO

*[bugpoint(1)](/bugpoint/1.md)*

## AUTHOR

*Maintained by the LLVM Team (https://llvm.org/).*

## COPYRIGHT

*2003-2025, LLVM Project*
