Make a somewhat subtle change in the logic of block placement. Sometimes
authorChandler Carruth <chandlerc@gmail.com>
Tue, 10 Apr 2012 13:35:57 +0000 (13:35 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 10 Apr 2012 13:35:57 +0000 (13:35 +0000)
commit45fb79bc54159330979bf24e4bfbdbb64bee1e2c
tree689f15315027d9f11defcb30c48345dfca1b1823
parent999821cddfeb8fd5115261c539c951f8733c943a
Make a somewhat subtle change in the logic of block placement. Sometimes
the loop header has a non-loop predecessor which has been pre-fused into
its chain due to unanalyzable branches. In this case, rotating the
header into the body of the loop in order to place a loop exit at the
bottom of the loop is a Very Bad Idea as it makes the loop
non-contiguous.

I'm working on a good test case for this, but it's a bit annoynig to
craft. I should get one shortly, but I'm submitting this now so I can
begin the (lengthy) performance analysis process. An initial run of LNT
looks really, really good, but there is too much noise there for me to
trust it much.

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