Index: lib/Transforms/Coroutines/CoroCleanup.cpp =================================================================== --- lib/Transforms/Coroutines/CoroCleanup.cpp +++ lib/Transforms/Coroutines/CoroCleanup.cpp @@ -101,7 +101,9 @@ struct CoroCleanup : FunctionPass { static char ID; // Pass identification, replacement for typeid - CoroCleanup() : FunctionPass(ID) {} + CoroCleanup() : FunctionPass(ID) { + initializeCoroCleanupPass(*PassRegistry::getPassRegistry()); + } std::unique_ptr L; @@ -116,9 +118,10 @@ } bool runOnFunction(Function &F) override { - if (L) - return L->lowerRemainingCoroIntrinsics(F); - return false; + if (!L || skipFunction(F)) + return false; + + return L->lowerRemainingCoroIntrinsics(F); } void getAnalysisUsage(AnalysisUsage &AU) const override { if (!L) Index: lib/Transforms/Coroutines/CoroEarly.cpp =================================================================== --- lib/Transforms/Coroutines/CoroEarly.cpp +++ lib/Transforms/Coroutines/CoroEarly.cpp @@ -183,7 +183,9 @@ struct CoroEarly : public FunctionPass { static char ID; // Pass identification, replacement for typeid. - CoroEarly() : FunctionPass(ID) {} + CoroEarly() : FunctionPass(ID) { + initializeCoroEarlyPass(*PassRegistry::getPassRegistry()); + } std::unique_ptr L; @@ -199,7 +201,7 @@ } bool runOnFunction(Function &F) override { - if (!L) + if (!L || skipFunction(F)) return false; return L->lowerEarlyIntrinsics(F); Index: lib/Transforms/Coroutines/CoroElide.cpp =================================================================== --- lib/Transforms/Coroutines/CoroElide.cpp +++ lib/Transforms/Coroutines/CoroElide.cpp @@ -258,7 +258,9 @@ namespace { struct CoroElide : FunctionPass { static char ID; - CoroElide() : FunctionPass(ID) {} + CoroElide() : FunctionPass(ID) { + initializeCoroElidePass(*PassRegistry::getPassRegistry()); + } std::unique_ptr L; @@ -269,7 +271,7 @@ } bool runOnFunction(Function &F) override { - if (!L) + if (!L || skipFunction(F)) return false; bool Changed = false; Index: lib/Transforms/Coroutines/CoroSplit.cpp =================================================================== --- lib/Transforms/Coroutines/CoroSplit.cpp +++ lib/Transforms/Coroutines/CoroSplit.cpp @@ -681,7 +681,9 @@ struct CoroSplit : public CallGraphSCCPass { static char ID; // Pass identification, replacement for typeid - CoroSplit() : CallGraphSCCPass(ID) {} + CoroSplit() : CallGraphSCCPass(ID) { + initializeCoroSplitPass(*PassRegistry::getPassRegistry()); + } bool Run = false;