15 #ifndef LLVM_CODEGEN_PASSES_H
16 #define LLVM_CODEGEN_PASSES_H
25 class MachineFunctionPass;
28 class ScheduleDAGInstrs;
30 class TargetLoweringBase;
31 class TargetRegisterClass;
33 struct MachineSchedContext;
70 assert(!IsInstance &&
"Not a Pass ID");
74 assert(IsInstance &&
"Not a Pass Instance");
132 template<
typename TMC> TMC &
getTM()
const {
133 return *
static_cast<TMC*
>(
TM);
154 Started = (StartAfter == 0);
226 void setOpt(
bool &Opt,
bool Val);
362 MachineFunctionPass *
364 const std::string &Banner =
"");
virtual const TargetLowering * getTargetLowering() const
void enablePass(AnalysisID PassID)
Allow the target to enable a specific standard pass by default.
AnalysisID addPass(AnalysisID PassID)
virtual void addIRPasses()
void setDisableVerify(bool Disable)
char & MachineLICMID
MachineLICM - This pass performs LICM on machine instructions.
ImmutablePass * createBasicTargetTransformInfoPass(const TargetMachine *TM)
Create a basic TargetTransformInfo analysis pass.
char & MachineDominatorsID
MachineDominators - This pass is a machine dominators analysis pass.
virtual bool addPreRewrite()
FunctionPass * createDwarfEHPass(const TargetMachine *TM)
char & RegisterCoalescerID
RegisterCoalescer - This pass merges live ranges to eliminate copies.
char & EarlyIfConverterID
char & MachineSchedulerID
MachineScheduler - This pass schedules machine instructions.
char & ProcessImplicitDefsID
ProcessImpicitDefs pass - This pass removes IMPLICIT_DEFs.
virtual void addMachineSSAOptimization()
Add passes that optimize machine instructions in SSA form.
char & MachineBlockPlacementStatsID
virtual bool addPostRegAlloc()
char & MachineFunctionPrinterPassID
MachineFunctionPrinterPass - This pass prints out MachineInstr's.
Pass * getInstance() const
void insertPass(AnalysisID TargetPassID, IdentifyingPassPtr InsertedPassID)
Insert InsertedPassID pass after TargetPassID pass.
char & MachineLoopInfoID
MachineLoopInfo - This pass is a loop analysis pass.
TMC & getTM() const
Get the right type of TargetMachine for this target.
FunctionPass * createGCLoweringPass()
bool getOptimizeRegAlloc() const
Return true if the optimized regalloc pipeline is enabled.
IdentifyingPassPtr(Pass *InstancePtr)
FunctionPass * createRegAllocPass(bool Optimized)
char & FinalizeMachineBundlesID
CodeGenOpt::Level getOptLevel() const
char & UnreachableMachineBlockElimID
virtual void addMachinePasses()
IdentifyingPassPtr getPassSubstitution(AnalysisID StandardID) const
char & MachineCSEID
MachineCSE - This pass performs global CSE on machine instructions.
char & StackSlotColoringID
StackSlotColoring - This pass performs stack slot coloring.
char & ExpandPostRAPseudosID
char & ExpandISelPseudosID
ExpandISelPseudos - This pass expands pseudo-instructions.
char & DeadMachineInstructionElimID
DeadMachineInstructionElim - This pass removes dead machine instructions.
void substitutePass(AnalysisID StandardID, IdentifyingPassPtr TargetID)
FunctionPass * createUnreachableBlockEliminationPass()
void setStartStopPasses(AnalysisID Start, AnalysisID Stop)
CodeGenOpt::Level getOptLevel() const
virtual bool addILPOpts()
FunctionPass * createGCInfoPrinter(raw_ostream &OS)
virtual FunctionPass * createTargetRegisterAllocator(bool Optimized)
virtual bool addGCPasses()
Add standard GC passes.
virtual ScheduleDAGInstrs * createMachineScheduler(MachineSchedContext *C) const
static char PostRAMachineLICMID
void disablePass(AnalysisID PassID)
Allow the target to disable a specific standard pass by default.
char & LiveStacksID
LiveStacks pass. An analysis keeping track of the liveness of stack slots.
virtual void addOptimizedRegAlloc(FunctionPass *RegAllocPass)
void setEnableTailMerge(bool Enable)
virtual void addMachineLateOptimization()
Add passes that optimize machine instructions after register allocation.
virtual bool addInstSelector()
FunctionPass * createDefaultPBQPRegisterAllocator()
virtual bool addPreISel()
bool getEnableTailMerge() const
virtual void addISelPrepare()
virtual void addCodeGenPrepare()
char & UnpackMachineBundlesID
UnpackMachineBundles - This pass unpack machine instruction bundles.
char & MachineCopyPropagationID
void addPassesToHandleExceptions()
Add passes to lower exception handling for the code generator.
FunctionPass * createSjLjEHPreparePass(const TargetMachine *TM)
FunctionPass * createStackProtectorPass(const TargetMachine *TM)
FunctionPass * createExecutionDependencyFixPass(const TargetRegisterClass *RC)
char & MachineSinkingID
MachineSinking - This pass performs sinking on machine instructions.
FunctionPass * createMachineVerifierPass(const char *Banner=0)
FunctionPass * createBasicRegisterAllocator()
void printAndVerify(const char *Banner)
MachineFunctionPass * createMachineFunctionPrinterPass(raw_ostream &OS, const std::string &Banner="")
char & MachineTraceMetricsID
virtual bool addPreSched2()
char & PeepholeOptimizerID
virtual void addFastRegAlloc(FunctionPass *RegAllocPass)
char & PrologEpilogCodeInserterID
char & GCMachineCodeAnalysisID
virtual bool addPreRegAlloc()
char & IfConverterID
IfConverter - This pass performs machine code if conversion.
virtual void addBlockPlacement()
Add standard basic block placement passes.
FunctionPass * createGreedyRegisterAllocator()
char & MachineBlockPlacementID
virtual bool addPreEmitPass()
void setOpt(bool &Opt, bool Val)
char & EdgeBundlesID
EdgeBundles analysis - Bundle machine CFG edges.
char & TwoAddressInstructionPassID
static char EarlyTailDuplicateID
FunctionPass * createFastRegisterAllocator()
virtual ~TargetPassConfig()
IdentifyingPassPtr(AnalysisID IDPtr)
char & BranchFolderPassID
char & LocalStackSlotAllocationID
bool EnableTailMerge
Default setting for -enable-tail-merge on this target.
const TargetLowering * getTargetLowering() const