summaryrefslogtreecommitdiff
path: root/lib/CodeGen/SplitKit.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-10-27 00:39:05 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-10-27 00:39:05 +0000
commit0960a650b7047373da25bee6ec2eb73889c3b7bb (patch)
treec6c3e936d40c79933d38fa7fdebe20770445fe6f /lib/CodeGen/SplitKit.h
parent8c593f9173bb3b4474c8de964478f213e90764b9 (diff)
downloadllvm-0960a650b7047373da25bee6ec2eb73889c3b7bb.tar.gz
llvm-0960a650b7047373da25bee6ec2eb73889c3b7bb.tar.bz2
llvm-0960a650b7047373da25bee6ec2eb73889c3b7bb.tar.xz
Compute critical loop predecessors in the same way as critical loop exits.
Critical edges going into a loop are not as bad as critical exits. We can handle them by splitting the critical edge, or by having both inside and outside registers live out of the predecessor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117423 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SplitKit.h')
-rw-r--r--lib/CodeGen/SplitKit.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/CodeGen/SplitKit.h b/lib/CodeGen/SplitKit.h
index d9f16dc915..08fac7f451 100644
--- a/lib/CodeGen/SplitKit.h
+++ b/lib/CodeGen/SplitKit.h
@@ -122,6 +122,11 @@ public:
bool canSplitCriticalExits(const LoopBlocks &Blocks,
BlockPtrSet &CriticalExits);
+ /// getCriticalPreds - Get the set of loop predecessors with critical edges to
+ /// blocks outside the loop that have curli live in. We don't have to break
+ /// these edges, but they do require special treatment.
+ void getCriticalPreds(const LoopBlocks &Blocks, BlockPtrSet &CriticalPreds);
+
/// getBestSplitLoop - Return the loop where curli may best be split to a
/// separate register, or NULL.
const MachineLoop *getBestSplitLoop();