llvm-profgen - LLVM SPGO profile generation tool — LLVM 23.1.0 documentation

# 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.