PassPluginLibraryInfo getBPFCovPluginInfo()

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());
                        }
                    });
            }};
}