Clang / LLVMでProfile-Guided Optimization (PGO)
ざっくり
CFLAGS/CPPFLAGS="-O3 -mcpu -fcoverage-mapping -fprofile-instr-generate -gline-tables-only"
LDFLAGS="-fprofile-instr-generate" \
LLVM_PROFILE_FILE="code-%p.profraw"
を設定してbuild、実行。
$ cd /path/to/src
して
$llvm-profdata merge -output=code.profdata code-*.profraw
でprofrawデータをprofdataファイルにマージ。
CFLAGS/CXXFLAGS="-O3 -mcpu -fprofile-use=code.profdata -Wno-coverage-mismatch -Wno-error=coverage-mismatch"
で再度build
ってな流れっぽい。メモ。