diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp index 8b9768520e07ad0a172615fe6219a7553390e218..126056b844cb5a0a724b840380edb6f935eab664 100644 --- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp +++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp @@ -664,13 +664,7 @@ ExtractCodeRegion(const std::vector &code) { // * Pass in uses as args // 3) Move code region, add call instr to func // - for (std::vector::const_iterator - I = code.begin(), E = code.end(); I != E; ++I) { - BasicBlock *BB = *I; - BlocksToExtract.insert(BB); - if (InvokeInst *II = dyn_cast(BB->getTerminator())) - BlocksToExtract.insert(II->getUnwindDest()); - } + BlocksToExtract.insert(code.begin(), code.end()); Values inputs, outputs; @@ -794,7 +788,6 @@ Function* llvm::ExtractLoop(DominatorTree &DT, Loop *L, bool AggregateArgs) { /// ExtractBasicBlock - slurp a basic block into a brand new function /// Function* llvm::ExtractBasicBlock(BasicBlock *BB, bool AggregateArgs) { - if (BB->isLandingPad()) return 0; std::vector Blocks; Blocks.push_back(BB); return CodeExtractor(0, AggregateArgs).ExtractCodeRegion(Blocks); diff --git a/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll b/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll index 0460c19b7d17d7f03f647be4ed0bd6f05205cd37..fc58577f67abf8d8abfb7842ab8dd8ffbfa230aa 100644 --- a/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll +++ b/llvm/test/Transforms/CodeExtractor/2004-11-12-InvokeExtract.ll @@ -10,9 +10,6 @@ Cont: ; preds = %EB ret i32 %V Unw: ; preds = %EB - %exn = landingpad {i8*, i32} personality i32 (...)* @__gcc_personality_v0 - catch i8* null - resume { i8*, i32 } %exn + unwind } -declare i32 @__gcc_personality_v0(...)