diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp index 846a9321f53e..3bcf92e28a21 100644 --- a/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp +++ b/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp @@ -262,7 +262,7 @@ static bool markTails(Function &F, OptimizationRemarkEmitter *ORE) { // Note that this runs whether we know an alloca has escaped or not. If // it has, then we can't trust Tracker.AllocaUsers to be accurate. bool SafeToTail = true; - for (auto &Arg : CI->arg_operands()) { + for (auto &Arg : CI->args()) { if (isa<Constant>(Arg.getUser())) continue; if (Argument *A = dyn_cast<Argument>(Arg.getUser())) @@ -584,8 +584,8 @@ void TailRecursionEliminator::insertAccumulator(Instruction *AccRecInstr) { // call instruction into the newly created temporarily variable. void TailRecursionEliminator::copyByValueOperandIntoLocalTemp(CallInst *CI, int OpndIdx) { - PointerType *ArgTy = cast<PointerType>(CI->getArgOperand(OpndIdx)->getType()); - Type *AggTy = ArgTy->getElementType(); + Type *AggTy = CI->getParamByValType(OpndIdx); + assert(AggTy); const DataLayout &DL = F.getParent()->getDataLayout(); // Get alignment of byVal operand. @@ -611,8 +611,8 @@ void TailRecursionEliminator::copyByValueOperandIntoLocalTemp(CallInst *CI, // into the corresponding function argument location. void TailRecursionEliminator::copyLocalTempOfByValueOperandIntoArguments( CallInst *CI, int OpndIdx) { - PointerType *ArgTy = cast<PointerType>(CI->getArgOperand(OpndIdx)->getType()); - Type *AggTy = ArgTy->getElementType(); + Type *AggTy = CI->getParamByValType(OpndIdx); + assert(AggTy); const DataLayout &DL = F.getParent()->getDataLayout(); // Get alignment of byVal operand. @@ -667,7 +667,7 @@ bool TailRecursionEliminator::eliminateCall(CallInst *CI) { createTailRecurseLoopHeader(CI); // Copy values of ByVal operands into local temporarily variables. - for (unsigned I = 0, E = CI->getNumArgOperands(); I != E; ++I) { + for (unsigned I = 0, E = CI->arg_size(); I != E; ++I) { if (CI->isByValArgument(I)) copyByValueOperandIntoLocalTemp(CI, I); } @@ -675,7 +675,7 @@ bool TailRecursionEliminator::eliminateCall(CallInst *CI) { // Ok, now that we know we have a pseudo-entry block WITH all of the // required PHI nodes, add entries into the PHI node for the actual // parameters passed into the tail-recursive call. - for (unsigned I = 0, E = CI->getNumArgOperands(); I != E; ++I) { + for (unsigned I = 0, E = CI->arg_size(); I != E; ++I) { if (CI->isByValArgument(I)) { copyLocalTempOfByValueOperandIntoArguments(CI, I); ArgumentPHIs[I]->addIncoming(F.getArg(I), BB); |
