diff options
| author | 2019-01-27 16:42:12 +0000 | |
|---|---|---|
| committer | 2019-01-27 16:42:12 +0000 | |
| commit | b773203fb58f3ef282fb69c832d8710cab5bc82d (patch) | |
| tree | e75913f147570fbd75169647b144df85b88a038c /gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp | |
| parent | tweak errno in previous (diff) | |
| download | wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.tar.xz wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.zip | |
Import LLVM 7.0.1 release including clang, lld and lldb.
Diffstat (limited to 'gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp')
| -rw-r--r-- | gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp b/gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp index 5dc6068d4a0..6d18d061461 100644 --- a/gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp +++ b/gnu/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp @@ -389,12 +389,14 @@ Instruction *llvm::promoteCall(CallSite CS, Function *Callee, // Inspect the arguments of the call site. If an argument's type doesn't // match the corresponding formal argument's type in the callee, bitcast it // to the correct type. - for (Use &U : CS.args()) { - unsigned ArgNo = CS.getArgumentNo(&U); - Type *FormalTy = Callee->getFunctionType()->getParamType(ArgNo); - Type *ActualTy = U.get()->getType(); + auto CalleeType = Callee->getFunctionType(); + auto CalleeParamNum = CalleeType->getNumParams(); + for (unsigned ArgNo = 0; ArgNo < CalleeParamNum; ++ArgNo) { + auto *Arg = CS.getArgument(ArgNo); + Type *FormalTy = CalleeType->getParamType(ArgNo); + Type *ActualTy = Arg->getType(); if (FormalTy != ActualTy) { - auto *Cast = CastInst::Create(Instruction::BitCast, U.get(), FormalTy, "", + auto *Cast = CastInst::Create(Instruction::BitCast, Arg, FormalTy, "", CS.getInstruction()); CS.setArgument(ArgNo, Cast); } |
