Prevent rotating the blocks of a loop (and thus getting a backedge to be
authorChandler Carruth <chandlerc@gmail.com>
Sun, 27 Nov 2011 20:18:00 +0000 (20:18 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 27 Nov 2011 20:18:00 +0000 (20:18 +0000)
commit51901d85f718a7e293f52a7908eab9fe1c0c94a0
tree9b33dc7920aeee347fc57d356246390348abe553
parent70e22016281508228a21dad6314ec96229af85d9
Prevent rotating the blocks of a loop (and thus getting a backedge to be
fallthrough) in cases where we might fail to rotate an exit to an outer
loop onto the end of the loop chain.

Having *some* rotation, but not performing this rotation, is the primary
fix of thep performance regression with -enable-block-placement for
Olden/em3d (a whopping 30% regression). Still working on reducing the
test case that actually exercises this and the new rotation strategy out
of this code, but I want to check if this regresses other test cases
first as that may indicate it isn't the correct fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145195 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/MachineBlockPlacement.cpp