[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