aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/ErrorHandling.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2022-05-25 16:37:38 +0200
committerNikita Popov <npopov@redhat.com>2022-05-30 09:55:58 +0200
commit1721ff1dfd4592f1a391d9161627e2a68198a44e (patch)
treed8e114dd55b142085515423f27c9f0b2bb174702 /llvm/lib/Support/ErrorHandling.cpp
parentf5fa633b0955a8cee878b384801038fccef11fdc (diff)
downloadllvm-1721ff1dfd4592f1a391d9161627e2a68198a44e.zip
llvm-1721ff1dfd4592f1a391d9161627e2a68198a44e.tar.gz
llvm-1721ff1dfd4592f1a391d9161627e2a68198a44e.tar.bz2
[GVN] Enable enable-split-backedge-in-load-pre option by default
This option was added in D89854. It prevents GVN from performing load PRE in a loop, if doing so would require critical edge splitting on the backedge. From the review: > I know that GVN Load PRE negatively impacts peeling, > loop predication, so the passes expecting that latch has > a conditional branch. In the PhaseOrdering test in this patch, splitting the backedge negatively affects vectorization: After critical edge splitting, the loop gets rotated, effectively peeling off the first loop iteration. The effect is that the first element is handled separately, then the bulk of the elements use a vectorized reduction (but using unaligned, off-by-one memory accesses) and then a tail of 15 elements is handled separately again. It's probably worth noting that the loop load PRE from D99926 is not affected by this change (as it does not need backedge splitting). This is about normal load PRE that happens to occur inside a loop. Differential Revision: https://reviews.llvm.org/D126382
Diffstat (limited to 'llvm/lib/Support/ErrorHandling.cpp')
0 files changed, 0 insertions, 0 deletions