summaryrefslogtreecommitdiffstats
path: root/llvm/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
commit795ed981808402f8ce91d15f3dcf3bc3510ad557 (patch)
tree7797cd9a176a30574085ff1ad8bd6c62ae28bfb6 /llvm/lib/CodeGen/SplitKit.h
parent0e7a011a006605926a5038b20bec4bd2fec017a3 (diff)
downloadbcm5719-llvm-795ed981808402f8ce91d15f3dcf3bc3510ad557.tar.gz
bcm5719-llvm-795ed981808402f8ce91d15f3dcf3bc3510ad557.zip
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. llvm-svn: 117423
Diffstat (limited to 'llvm/lib/CodeGen/SplitKit.h')
-rw-r--r--llvm/lib/CodeGen/SplitKit.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SplitKit.h b/llvm/lib/CodeGen/SplitKit.h
index d9f16dc9155..08fac7f451d 100644
--- a/llvm/lib/CodeGen/SplitKit.h
+++ b/llvm/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();
OpenPOWER on IntegriCloud