diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2015-01-14 20:19:29 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2015-01-14 20:19:29 +0000 |
commit | e3288147f0869512b7bc877a6c33b684b9ffa615 (patch) | |
tree | 5a163bd11ae623668bee847fd0eadd9eb057931e /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | |
parent | 082cfc05f1509da7aa87fd1e30e279755b4477d8 (diff) | |
download | bcm5719-llvm-e3288147f0869512b7bc877a6c33b684b9ffa615.tar.gz bcm5719-llvm-e3288147f0869512b7bc877a6c33b684b9ffa615.zip |
[MBP] Add flags to disable the BadCFGConflict check in MachineBlockPlacement.
Some benchmarks have shown that this could lead to a potential
performance benefit, and so adding some flags to try to help measure the
difference.
A possible explanation. In diamond-shaped CFGs (A followed by either
B or C both followed by D), putting B and C both in between A and
D leads to the code being less dense than it could be. Always either
B or C have to be skipped increasing the chance of cache misses etc.
Moving either B or C to after D might be beneficial on average.
In the long run, but we should probably do a better job of analyzing the
basic block and branch probabilities to move the correct one of B or
C to after D. But even if we don't use this in the long run, it is
a good baseline for benchmarking.
Original patch authored by Daniel Jasper with test tweaks and a second
flag added by me.
Differential Revision: http://reviews.llvm.org/D6969
llvm-svn: 226034
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
0 files changed, 0 insertions, 0 deletions