3#include <llvm/IR/Function.h>
4#include <llvm/IR/Module.h>
5#include <llvm/Passes/PassBuilder.h>
6#include <llvm/Passes/PassPlugin.h>
17template<
typename PassT>
18class DOCCPass :
public llvm::PassInfoMixin<DOCCPass<PassT>> {
23 template<
typename... Ts>
24 llvm::PreservedAnalyses
run(llvm::Module& Mod, llvm::ModuleAnalysisManager& MAM) {
25 if (!PassT::available(AM_)) {
26 return llvm::PreservedAnalyses::all();
29 return Impl_.run(Mod, MAM, AM_);
37template<
typename PassT>
Definition docc_pass.h:18
DOCCPass(PassT Impl, analysis::AnalysisManager &AM)
Definition docc_pass.h:20
llvm::PreservedAnalyses run(llvm::Module &Mod, llvm::ModuleAnalysisManager &MAM)
Definition docc_pass.h:24
Definition code_generation_pass.h:14
DOCCPass< PassT > createDOCCPass(PassT Pass, analysis::AnalysisManager &AM)
Definition docc_pass.h:38