diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp index 52a31a3c7fb1..23e6811f79df 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp @@ -687,15 +687,12 @@ void ObjCARCOpt::OptimizeAutoreleaseRVCall(Function &F, namespace { Instruction * -CloneCallInstForBB(Instruction &I, BasicBlock &BB, +CloneCallInstForBB(CallInst &CI, BasicBlock &BB, DenseMap &BlockColors) { - auto *CI = dyn_cast(&I); - assert(CI && "CloneCallInst must receive a CallInst"); - SmallVector OpBundles; - for (unsigned I = 0, E = CI->getNumOperandBundles(); I != E; ++I) { - auto Bundle = CI->getOperandBundleAt(I); - // funclets will be reassociated in the future + for (unsigned I = 0, E = CI.getNumOperandBundles(); I != E; ++I) { + auto Bundle = CI.getOperandBundleAt(I); + // Funclets will be reassociated in the future. if (Bundle.getTagID() == LLVMContext::OB_funclet) continue; OpBundles.emplace_back(Bundle); @@ -709,7 +706,7 @@ CloneCallInstForBB(Instruction &I, BasicBlock &BB, OpBundles.emplace_back("funclet", EHPad); } - return CallInst::Create(CI, OpBundles); + return CallInst::Create(&CI, OpBundles); } }