LLVM-PROFGEN(1)

πŸ“¦ version 23.1.3, in centos-stream 9

🌸 NAME 🌸

okay bestie, welcome to the LLVM-PROFGEN(1) page from the LLVM manual β€” this one is literally about llvm-profgen, the LLVM SPGO profile generation tool. No cap, that's the name vibe. πŸ’…

✨ SYNOPSIS ✨

llvm-profgen [commands] [options]

πŸ¦‹ DESCRIPTION πŸ¦‹

So llvm-profgen is the utility that generates a profile data file from the perf script data files you give it, all for sample-based profile guided optimization(SPGO). That's the main character job, periodt. πŸ’–

πŸŽ€ COMMANDS πŸŽ€

At least one of the following commands are required:

  • --perfscript=<string[,string,...]> β€” path of the perf-script trace created by the Linux perf tool with the 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. This one 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 the 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, bestie β€” yes, we're listing every single one:

  • --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 the 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. (Yep, --output shows up here too with <output>.) πŸŽ€
  • --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/). πŸ’–

2003-2026, LLVM Project

Cute sign-off: this page is from the LLVM manual, LLVM-PROFGEN(1), page 23, dated 2026-10-06. Bye bestie, mwah πŸ’–

πŸ“¦ where this page comes from