diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp index bc4b6de2f07f..eb51a998b27d 100644 --- a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp +++ b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp @@ -349,7 +349,7 @@ static bool canMoveAboveCall(Instruction *I, CallInst *CI, AliasAnalysis *AA) { // does not write to memory and the load provably won't trap. // Writes to memory only matter if they may alias the pointer // being loaded from. - const DataLayout &DL = L->getModule()->getDataLayout(); + const DataLayout &DL = L->getDataLayout(); if (isModSet(AA->getModRefInfo(CI, MemoryLocation::get(L))) || !isSafeToLoadUnconditionally(L->getPointerOperand(), L->getType(), L->getAlign(), DL, L)) @@ -779,6 +779,7 @@ void TailRecursionEliminator::cleanupAndFinalize() { AccRecInstrNew->setOperand(AccRecInstr->getOperand(0) == AccPN, RI->getOperand(0)); AccRecInstrNew->insertBefore(RI); + AccRecInstrNew->dropLocation(); RI->setOperand(0, AccRecInstrNew); } } @@ -807,6 +808,7 @@ void TailRecursionEliminator::cleanupAndFinalize() { AccRecInstrNew->setOperand(AccRecInstr->getOperand(0) == AccPN, SI->getFalseValue()); AccRecInstrNew->insertBefore(SI); + AccRecInstrNew->dropLocation(); SI->setFalseValue(AccRecInstrNew); } } |
