[llvm-commits] [llvm] r79957 - /llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp
Devang Patel
devang.patel at gmail.com
Mon Aug 24 16:38:22 PDT 2009
On Mon, Aug 24, 2009 at 4:32 PM, Owen Anderson<resistor at mac.com> wrote:
> Author: resistor
> Date: Mon Aug 24 18:32:14 2009
> New Revision: 79957
>
> URL: http://llvm.org/viewvc/llvm-project?rev=79957&view=rev
> Log:
> When extracting SEME regions of code, the extractor needs to update the dominator tree for split return blocks.
>
> Modified:
> llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp
>
> Modified: llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp?rev=79957&r1=79956&r2=79957&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp (original)
> +++ llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp Mon Aug 24 18:32:14 2009
> @@ -183,8 +183,24 @@
> void CodeExtractor::splitReturnBlocks() {
> for (std::set<BasicBlock*>::iterator I = BlocksToExtract.begin(),
> E = BlocksToExtract.end(); I != E; ++I)
> - if (ReturnInst *RI = dyn_cast<ReturnInst>((*I)->getTerminator()))
> - (*I)->splitBasicBlock(RI, (*I)->getName()+".ret");
> + if (ReturnInst *RI = dyn_cast<ReturnInst>((*I)->getTerminator())) {
> + BasicBlock *New = (*I)->splitBasicBlock(RI, (*I)->getName()+".ret");
> + if (DT) {
> + // Old dominates New. New node domiantes all other nodes dominated
> + //by Old.
> + DomTreeNode *OldNode = DT->getNode(*I);
> + std::vector<DomTreeNode *> Children;
>
SmallVector ?
-
Devang
More information about the llvm-commits
mailing list