diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp b/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp index aeb7c5d461f0..47f663fa0cf0 100644 --- a/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp +++ b/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp @@ -62,10 +62,8 @@ #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/PatternMatch.h" -#include "llvm/InitializePasses.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" -#include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Transforms/Utils/Local.h" @@ -374,10 +372,10 @@ static void splitCallSite(CallBase &CB, return; } - auto *OriginalBegin = &*TailBB->begin(); + BasicBlock::iterator OriginalBegin = TailBB->begin(); // Replace users of the original call with a PHI mering call-sites split. if (CallPN) { - CallPN->insertBefore(OriginalBegin); + CallPN->insertBefore(*TailBB, OriginalBegin); CB.replaceAllUsesWith(CallPN); } @@ -389,6 +387,7 @@ static void splitCallSite(CallBase &CB, // do not introduce unnecessary PHI nodes for def-use chains from the call // instruction to the beginning of the block. auto I = CB.getReverseIterator(); + Instruction *OriginalBeginInst = &*OriginalBegin; while (I != TailBB->rend()) { Instruction *CurrentI = &*I++; if (!CurrentI->use_empty()) { @@ -401,12 +400,13 @@ static void splitCallSite(CallBase &CB, for (auto &Mapping : ValueToValueMaps) NewPN->addIncoming(Mapping[CurrentI], cast<Instruction>(Mapping[CurrentI])->getParent()); - NewPN->insertBefore(&*TailBB->begin()); + NewPN->insertBefore(*TailBB, TailBB->begin()); CurrentI->replaceAllUsesWith(NewPN); } + CurrentI->dropDbgValues(); CurrentI->eraseFromParent(); // We are done once we handled the first original instruction in TailBB. - if (CurrentI == OriginalBegin) + if (CurrentI == OriginalBeginInst) break; } } |
