diff options
author | Michael Kuperstein <mkuper@google.com> | 2016-11-30 21:13:57 +0000 |
---|---|---|
committer | Michael Kuperstein <mkuper@google.com> | 2016-11-30 21:13:57 +0000 |
commit | b151a641aa8fe3c1bbb2ed78279ede5f1ecc0e7e (patch) | |
tree | 1109eab7fac4364f34aa2da7f93ecdc8d31d16bd /llvm/lib/Fuzzer/FuzzerTracePC.cpp | |
parent | aa8b28e50901045476faca1b1047123d4f43d7ce (diff) | |
download | bcm5719-llvm-b151a641aa8fe3c1bbb2ed78279ede5f1ecc0e7e.tar.gz bcm5719-llvm-b151a641aa8fe3c1bbb2ed78279ede5f1ecc0e7e.zip |
[LoopUnroll] Implement profile-based loop peeling
This implements PGO-driven loop peeling.
The basic idea is that when the average dynamic trip-count of a loop is known,
based on PGO, to be low, we can expect a performance win by peeling off the
first several iterations of that loop.
Unlike unrolling based on a known trip count, or a trip count multiple, this
doesn't save us the conditional check and branch on each iteration. However,
it does allow us to simplify the straight-line code we get (constant-folding,
etc.). This is important given that we know that we will usually only hit this
code, and not the actual loop.
This is currently disabled by default.
Differential Revision: https://reviews.llvm.org/D25963
llvm-svn: 288274
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerTracePC.cpp')
0 files changed, 0 insertions, 0 deletions