[PATCH] D38563: [MachineBlockPlacement] Make sure PreferredLoopExit is cleared everytime new loop is processed
Xin Tong via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 4 14:33:07 PDT 2017
trentxintong created this revision.
Rotate on exit that actually exits the current loop.
https://reviews.llvm.org/D38563
Files:
lib/CodeGen/MachineBlockPlacement.cpp
Index: lib/CodeGen/MachineBlockPlacement.cpp
===================================================================
--- lib/CodeGen/MachineBlockPlacement.cpp
+++ lib/CodeGen/MachineBlockPlacement.cpp
@@ -2233,9 +2233,19 @@
// If we selected just the header for the loop top, look for a potentially
// profitable exit block in the event that rotating the loop can eliminate
// branches by placing an exit edge at the bottom.
+ //
+ // Loops are processed innermost to uttermost, make sure we clear
+ // PreferredLoopExit before processing a new loop.
+ PreferredLoopExit = nullptr;
if (!RotateLoopWithProfile && LoopTop == L.getHeader())
PreferredLoopExit = findBestLoopExit(L, LoopBlockSet);
+ // Make sure PreferredLoopExit actually exits the current loop.
+ if (PreferredLoopExit) {
+ assert(L.isLoopExiting(PreferredLoopExit) &&
+ "not an exiting block of current loop");
+ }
+
BlockChain &LoopChain = *BlockToChain[LoopTop];
// FIXME: This is a really lame way of walking the chains in the loop: we
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38563.117742.patch
Type: text/x-patch
Size: 1047 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171004/4f3cddd9/attachment.bin>
More information about the llvm-commits
mailing list