Third Encore

思い出すために忘れたことたち

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

 

ってな流れっぽい。メモ。