diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp index 2985ae004d3ccf..f64c26ef2bed64 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp @@ -102,11 +102,8 @@ class ObjCARCContract { }; class ObjCARCContractLegacyPass : public FunctionPass { - ObjCARCContract OCARCC; - public: void getAnalysisUsage(AnalysisUsage &AU) const override; - bool doInitialization(Module &M) override; bool runOnFunction(Function &F) override; static char ID; @@ -737,11 +734,9 @@ Pass *llvm::createObjCARCContractPass() { return new ObjCARCContractLegacyPass(); } -bool ObjCARCContractLegacyPass::doInitialization(Module &M) { - return OCARCC.init(M); -} - bool ObjCARCContractLegacyPass::runOnFunction(Function &F) { + ObjCARCContract OCARCC; + OCARCC.init(*F.getParent()); auto *AA = &getAnalysis().getAAResults(); auto *DT = &getAnalysis().getDomTree(); return OCARCC.run(F, AA, DT);