diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/InlineFunction.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 7386186..313728c0 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -1111,6 +1111,14 @@ bool llvm::InlineFunction(CallSite CS, InlineFunctionInfo &IFI, FirstNewBlock->getInstList(), AI, I); } + // Move any dbg.declares describing the allocas into the entry basic block. + for (auto &I : IFI.StaticAllocas) + if (auto AI = dyn_cast<AllocaInst>(I)) + if (auto *DDI = FindAllocaDbgDeclare(AI)) + if (DDI->getParent() != Caller->begin()) + Caller->getEntryBlock().getInstList() + .splice(AI->getNextNode(), FirstNewBlock->getInstList(), + DDI, DDI->getNextNode()); } bool InlinedMustTailCalls = false; |