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