xref: /aosp_15_r20/external/libvpx/tools/README.pgo.md (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker# Using Profile Guided Optimizations to identify compiler optimization failures
2*fb1b10abSAndroid Build Coastguard Worker
3*fb1b10abSAndroid Build Coastguard WorkerWhen using Clang, the `-Rpass-missed` flag enables the verbose log of failed
4*fb1b10abSAndroid Build Coastguard Workercompiler optimizations. However, the extensive log messages can obscure
5*fb1b10abSAndroid Build Coastguard Workerpotential optimization opportunities.
6*fb1b10abSAndroid Build Coastguard Worker
7*fb1b10abSAndroid Build Coastguard WorkerUse the following steps to generate a more transparent optimization report
8*fb1b10abSAndroid Build Coastguard Workerusing a previously created PGO profile file. The report also includes code
9*fb1b10abSAndroid Build Coastguard Workerhotness diagnostics:
10*fb1b10abSAndroid Build Coastguard Worker
11*fb1b10abSAndroid Build Coastguard Worker```bash
12*fb1b10abSAndroid Build Coastguard Worker$ ../libvpx/configure --use-profile=perf.profdata \
13*fb1b10abSAndroid Build Coastguard Worker  --extra-cflags="-fsave-optimization-record -fdiagnostics-show-hotness"
14*fb1b10abSAndroid Build Coastguard Worker```
15*fb1b10abSAndroid Build Coastguard Worker
16*fb1b10abSAndroid Build Coastguard WorkerConvert the generated YAML files into a detailed HTML report using the
17*fb1b10abSAndroid Build Coastguard Worker[optviewer2](https://github.com/OfekShilon/optview2) tool:
18*fb1b10abSAndroid Build Coastguard Worker
19*fb1b10abSAndroid Build Coastguard Worker```bash
20*fb1b10abSAndroid Build Coastguard Worker$ opt-viewer.py --output-dir=out/ --source-dir=libvpx .
21*fb1b10abSAndroid Build Coastguard Worker```
22*fb1b10abSAndroid Build Coastguard Worker
23*fb1b10abSAndroid Build Coastguard WorkerThe HTML report displays each code line's relative hotness, cross-referenced
24*fb1b10abSAndroid Build Coastguard Workerwith the failed compiler optimizations.
25