LLVM 17.0.0git
Classes | Namespaces | Macros | Functions
CodeGenPassBuilder.h File Reference

Interfaces for registering analysis passes, producing common pass manager configurations, and parsing of pass pipelines. More...

#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/ScopedNoAliasAA.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
#include "llvm/CodeGen/ExpandReductions.h"
#include "llvm/CodeGen/MachinePassManager.h"
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
#include "llvm/CodeGen/ReplaceWithVeclib.h"
#include "llvm/CodeGen/UnreachableBlockElim.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRPrinter/IRPrintingPasses.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/CGPassBuilderOption.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/Scalar/ConstantHoisting.h"
#include "llvm/Transforms/Scalar/LoopPassManager.h"
#include "llvm/Transforms/Scalar/LoopStrengthReduce.h"
#include "llvm/Transforms/Scalar/LowerConstantIntrinsics.h"
#include "llvm/Transforms/Scalar/MergeICmps.h"
#include "llvm/Transforms/Scalar/PartiallyInlineLibCalls.h"
#include "llvm/Transforms/Scalar/ScalarizeMaskedMemIntrin.h"
#include "llvm/Transforms/Utils/EntryExitInstrumenter.h"
#include "llvm/Transforms/Utils/LowerInvoke.h"
#include <cassert>
#include <type_traits>
#include <utility>
#include "MachinePassRegistry.def"
#include "llvm/CodeGen/MachinePassRegistry.def"

Go to the source code of this file.

Classes

class  llvm::CodeGenPassBuilder< DerivedT >
 This class provides access to building LLVM's passes. More...
 
class  llvm::CodeGenPassBuilder< DerivedT >::AddIRPass
 
class  llvm::CodeGenPassBuilder< DerivedT >::AddMachinePass
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DUMMY_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define MODULE_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)    MAM.registerPass([&] { return PASS_NAME CONSTRUCTOR; });
 
#define FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)    FAM.registerPass([&] { return PASS_NAME CONSTRUCTOR; });
 
#define MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)    MFAM.registerPass([&] { return PASS_NAME CONSTRUCTOR; });
 
#define FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
 

Functions

static AAManager llvm::registerAAAnalyses ()
 

Detailed Description

Interfaces for registering analysis passes, producing common pass manager configurations, and parsing of pass pipelines.

Definition in file CodeGenPassBuilder.h.

Macro Definition Documentation

◆ DUMMY_FUNCTION_PASS [1/2]

#define DUMMY_FUNCTION_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
struct PASS_NAME : public PassInfoMixin<PASS_NAME> { \
template <typename... Ts> PASS_NAME(Ts &&...) {} \
PreservedAnalyses run(Function &, FunctionAnalysisManager &) { \
return PreservedAnalyses::all(); \
} \
};
#define PASS_NAME

Definition at line 58 of file CodeGenPassBuilder.h.

◆ DUMMY_FUNCTION_PASS [2/2]

#define DUMMY_FUNCTION_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, false};
std::string Name

Definition at line 58 of file CodeGenPassBuilder.h.

◆ DUMMY_MACHINE_FUNCTION_PASS [1/2]

#define DUMMY_MACHINE_FUNCTION_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
struct PASS_NAME : public PassInfoMixin<PASS_NAME> { \
template <typename... Ts> PASS_NAME(Ts &&...) {} \
PreservedAnalyses run(MachineFunction &, \
MachineFunctionAnalysisManager &) { \
return PreservedAnalyses::all(); \
} \
static AnalysisKey Key; \
};
Key
PAL metadata keys.

Definition at line 84 of file CodeGenPassBuilder.h.

◆ DUMMY_MACHINE_FUNCTION_PASS [2/2]

#define DUMMY_MACHINE_FUNCTION_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, true};

Definition at line 84 of file CodeGenPassBuilder.h.

◆ DUMMY_MACHINE_MODULE_PASS [1/2]

#define DUMMY_MACHINE_MODULE_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
struct PASS_NAME : public PassInfoMixin<PASS_NAME> { \
template <typename... Ts> PASS_NAME(Ts &&...) {} \
Error run(Module &, MachineFunctionAnalysisManager &) { \
return Error::success(); \
} \
PreservedAnalyses run(MachineFunction &, \
MachineFunctionAnalysisManager &) { \
llvm_unreachable("this api is to make new PM api happy"); \
} \
static AnalysisKey Key; \
};
Machine Check Debug Module
PointerTypeMap run(const Module &M)
Compute the PointerTypeMap for the module M.

Definition at line 72 of file CodeGenPassBuilder.h.

◆ DUMMY_MACHINE_MODULE_PASS [2/2]

#define DUMMY_MACHINE_MODULE_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, true};

Definition at line 72 of file CodeGenPassBuilder.h.

◆ DUMMY_MODULE_PASS [1/2]

#define DUMMY_MODULE_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
struct PASS_NAME : public PassInfoMixin<PASS_NAME> { \
template <typename... Ts> PASS_NAME(Ts &&...) {} \
PreservedAnalyses run(Module &, ModuleAnalysisManager &) { \
return PreservedAnalyses::all(); \
} \
};

Definition at line 65 of file CodeGenPassBuilder.h.

◆ DUMMY_MODULE_PASS [2/2]

#define DUMMY_MODULE_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, false};

Definition at line 65 of file CodeGenPassBuilder.h.

◆ FUNCTION_ANALYSIS

#define FUNCTION_ANALYSIS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)     FAM.registerPass([&] { return PASS_NAME CONSTRUCTOR; });

◆ FUNCTION_PASS

#define FUNCTION_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, false};

◆ MACHINE_FUNCTION_ANALYSIS

#define MACHINE_FUNCTION_ANALYSIS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)     MFAM.registerPass([&] { return PASS_NAME CONSTRUCTOR; });

◆ MACHINE_FUNCTION_PASS

#define MACHINE_FUNCTION_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, true};

◆ MACHINE_MODULE_PASS

#define MACHINE_MODULE_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, true};

◆ MODULE_ANALYSIS

#define MODULE_ANALYSIS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)     MAM.registerPass([&] { return PASS_NAME CONSTRUCTOR; });

◆ MODULE_PASS

#define MODULE_PASS (   NAME,
  PASS_NAME,
  CONSTRUCTOR 
)
Value:
if (Name == NAME) \
Ret = {#PASS_NAME, false};