HomePhabricator

New tool: opt-stats.py

Description

New tool: opt-stats.py

I am planning to use this tool to find too noisy (missed) optimization
remarks. Long term it may actually be better to just have another tool that
exports the remarks into an sqlite database and perform queries like this in
SQL.

This splits out the YAML parsing from opt-viewer.py into a new Python module
optrecord.py.

This is the result of the script on the LLVM testsuite:

Total number of remarks 714433

Top 10 remarks by pass:

inline                         52%
gvn                            24%
licm                           13%
loop-vectorize                  5%
asm-printer                     3%
loop-unroll                     1%
regalloc                        1%
inline-cost                     0%
slp-vectorizer                  0%
loop-delete                     0%

Top 10 remarks:

gvn/LoadClobbered              20%
inline/Inlined                 19%
inline/CanBeInlined            18%
inline/NoDefinition             9%
licm/LoadWithLoopInvariantAddressInvalidated  6%
licm/Hoisted                    6%
asm-printer/InstructionCount    3%
inline/TooCostly                3%
gvn/LoadElim                    3%
loop-vectorize/MissedDetails    2%

Beside some refactoring, I also changed optrecords not to use context to
access global data (max_hotness). Because of the separate module this would
have required splitting context into two. However it's not possible to access
the optrecord context from the SourceFileRenderer when calling back to
Remark.RelativeHotness.

Details

Committed
anemetMar 1 2017, 1:35 PM
Parents
rL296681: Re-enable BinaryStreamTest.StreamReaderObject.
Branches
Unknown
Tags
Unknown