in lib/BPFCov.cpp [728:756]
PassPluginLibraryInfo getBPFCovPluginInfo()
{
return {LLVM_PLUGIN_API_VERSION, PluginName, LLVM_VERSION_STRING,
[](PassBuilder &PB)
{
// #1 Regiser "opt -passes=bpf-cov"
PB.registerPipelineParsingCallback(
[&](StringRef Name, ModulePassManager &MPM, ArrayRef<PassBuilder::PipelineElement>)
{
if (Name.equals(PassArg))
{
errs() << "strip-initializers-only: " << (StripInitializersOnly.getValue() ? "true" : "false") << "\n";
MPM.addPass(BPFCov());
return true;
}
return false;
});
// #2 Register for running at "default<O2>" // TODO > double-check
PB.registerPipelineStartEPCallback(
[&](ModulePassManager &MPM, ArrayRef<PassBuilder::OptimizationLevel> OLevels)
{
if (OLevels.size() == 1 &&
OLevels[0] == PassBuilder::OptimizationLevel::O2)
{
MPM.addPass(BPFCov());
}
});
}};
}