---
name: "llvm-profgen"
section: "1"
platform: "linux"
package: "llvm"
version: "23.1.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/llvm-profgen"
---

# llvm-profgen(1)

LLVM SPGO profile generation tool

## NAME

llvm-profgen - LLVM SPGO profile generation tool

## SYNOPSIS

**llvm-profgen** \[*commands*\] \[*options*\]

## DESCRIPTION

The **llvm-profgen** utility generates a profile data file from given perf script data files for sample-based profile guided optimization(SPGO).

## COMMANDS

At least one of the following commands are required:

- **--perfscript=\<string\[,string,...\]\>**

  Path of perf-script trace created by Linux perf tool with *script* command(the raw perf.data should be profiled with -b).

- **--etm=\<string\>**

  Path of the ETM trace file created by ARM CoreSight trace tools. Requires the OpenCSD library version 1.5.4 or higher to be enabled during the build.

- **--perfdata=\<perfdata\>, --pd**

  Path of raw perf data created by Linux perf tool (it should be profiled with -b).

- **--unsymbolized-profile=\<unsymbolized profile\>, --up**

  Path of the unsymbolized profile created by **llvm-profgen** with **--skip-symbolization**.

- **--llvm-sample-profile=\<llvm sample profile\>**

  Path of the LLVM sample profile.

**Note:**

Only one of **--perfscript**, **--perfdata**, **--unsymbolized-profile**, **--llvm-sample-profile**, or **--etm** may be specified at a time.

- **--binary=\<string\[,string,...\]\>**

  Path of the input profiled binary files.

- **--output=\<string\>**

  Path of the output profile file.

## OPTIONS

**llvm-profgen** supports the following options:

- **--format=\[text\|binary\|extbinary\|compbinary\|gcc\]**

  Specify the format of the generated profile. Supported \<format\>  are *text*, *binary*, *extbinary*, *compbinary*, *gcc*, see *llvm-profdata* for more descriptions of the format.

- **--show-mmap-events**

  Print mmap events.

- **--show-disassembly**

  Print disassembled code.

- **--x86-asm-syntax=\[att\|intel\]**

  Specify whether to print assembly code in AT&T syntax (the default) or Intel syntax.

- **--debug-binary=\<debug-binary\>**

  Path of debug info binary. **llvm-profgen** will load the DWARF info from it instead of the executable binary.

- **--target-triple=\<triple\>**

  Override the target triple for the binary. This is useful for ETM trace decoding to specify the correct Arm M-profile target.

- **--pid**

  Process Id for the profiled executable binary.

- **--output=\<output\>**

  Path of the output profile file.

- **--data-access-perftrace=\<data-access-perftrace\>**

  File path of a Linux perf raw trace (generated by **perf report -D**) consisting of memory access events.

## Author

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

## Copyright

2003-2026, LLVM Project
