diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-08-13 21:18:48 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-08-13 21:18:48 +0000 |
commit | d1191ee43cd35bea5154480e10d3829d9fa2e762 (patch) | |
tree | 84303a25b5a349b340c014b327a2a9bd332a1a75 /llvm/lib/CodeGen/SplitKit.h | |
parent | 081ffcd00bc00fbbf6fbbf22df5e21634b44c48c (diff) | |
download | bcm5719-llvm-d1191ee43cd35bea5154480e10d3829d9fa2e762.tar.gz bcm5719-llvm-d1191ee43cd35bea5154480e10d3829d9fa2e762.zip |
Implement splitting inside a single block.
When a live range is contained a single block, we can split it around
instruction clusters. The current approach is very primitive, splitting before
and after the largest gap between uses.
llvm-svn: 111043
Diffstat (limited to 'llvm/lib/CodeGen/SplitKit.h')
-rw-r--r-- | llvm/lib/CodeGen/SplitKit.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SplitKit.h b/llvm/lib/CodeGen/SplitKit.h index 08f7c56b470..ad9b92f5aed 100644 --- a/llvm/lib/CodeGen/SplitKit.h +++ b/llvm/lib/CodeGen/SplitKit.h @@ -127,6 +127,12 @@ public: /// having curli split to a new live interval. Return true if Blocks can be /// passed to SplitEditor::splitSingleBlocks. bool getMultiUseBlocks(BlockPtrSet &Blocks); + + /// getBlockForInsideSplit - If curli is contained inside a single basic block, + /// and it wou pay to subdivide the interval inside that block, return it. + /// Otherwise return NULL. The returned block can be passed to + /// SplitEditor::splitInsideBlock. + const MachineBasicBlock *getBlockForInsideSplit(); }; /// SplitEditor - Edit machine code and LiveIntervals for live range @@ -242,7 +248,11 @@ public: /// basic block in Blocks. Return true if curli has been completely replaced, /// false if curli is still intact, and needs to be spilled or split further. bool splitSingleBlocks(const SplitAnalysis::BlockPtrSet &Blocks); -}; + /// splitInsideBlock - Split curli into multiple intervals inside MBB. Return + /// true if curli has been completely replaced, false if curli is still + /// intact, and needs to be spilled or split further. + bool splitInsideBlock(const MachineBasicBlock *); +}; } |