LLVM  14.0.0git
Classes | Namespaces | Macros | Functions | Variables
TargetPassConfig.cpp File Reference
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/CFLAndersAliasAnalysis.h"
#include "llvm/Analysis/CFLSteensAliasAnalysis.h"
#include "llvm/Analysis/CallGraphSCCPass.h"
#include "llvm/Analysis/ScopedNoAliasAA.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
#include "llvm/CodeGen/CSEConfigBase.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachinePassRegistry.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/RegAllocRegistry.h"
#include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/PassInstrumentation.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/Pass.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Discriminator.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Support/Threading.h"
#include "llvm/Target/CGPassBuilderOption.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Utils.h"
#include "llvm/Transforms/Utils/SymbolRewriter.h"
#include <cassert>
#include <string>
Include dependency graph for TargetPassConfig.cpp:

Go to the source code of this file.

Classes

struct  INITIALIZE_PASS::InsertedPass
 
class  llvm::PassConfigImpl
 

Namespaces

 INITIALIZE_PASS
 TargetPassConfig.
 
 llvm
 This file implements support for optimizing divisions by a constant.
 

Macros

#define SET_OPTION(Option)
 
#define SET_BOOLEAN_OPTION(Option)   Opt.Option = Option;
 
#define DISABLE_PASS(Option, Name)
 

Functions

static IdentifyingPassPtr applyDisable (IdentifyingPassPtr PassID, bool Override)
 Allow standard passes to be disabled by command line options. More...
 
static IdentifyingPassPtr overridePass (AnalysisID StandardID, IdentifyingPassPtr TargetID)
 Allow standard passes to be disabled by the command line, regardless of who is adding the pass. More...
 
static const std::string getFSProfileFile (const TargetMachine *TM)
 
static const std::string getFSRemappingFile (const TargetMachine *TM)
 
static const PassInfogetPassInfo (StringRef PassName)
 
static AnalysisID getPassIDFromName (StringRef PassName)
 
static std::pair< StringRef, unsigned > getPassNameAndInstanceNum (StringRef PassName)
 
static void registerPartialPipelineCallback (PassInstrumentationCallbacks &PIC, LLVMTargetMachine &LLVMTM)
 
static FunctionPassuseDefaultRegisterAllocator ()
 -regalloc=... command line option. More...
 
static void initializeDefaultRegisterAllocatorOnce ()
 

Variables

static cl::opt< bool > EnableIPRA ("enable-ipra", cl::init(false), cl::Hidden, cl::desc("Enable interprocedural register allocation " "to reduce load/store at procedure calls."))
 
static cl::opt< bool > DisablePostRASched ("disable-post-ra", cl::Hidden, cl::desc("Disable Post Regalloc Scheduler"))
 
static cl::opt< bool > DisableBranchFold ("disable-branch-fold", cl::Hidden, cl::desc("Disable branch folding"))
 
static cl::opt< bool > DisableTailDuplicate ("disable-tail-duplicate", cl::Hidden, cl::desc("Disable tail duplication"))
 
static cl::opt< bool > DisableEarlyTailDup ("disable-early-taildup", cl::Hidden, cl::desc("Disable pre-register allocation tail duplication"))
 
static cl::opt< bool > DisableBlockPlacement ("disable-block-placement", cl::Hidden, cl::desc("Disable probability-driven block placement"))
 
static cl::opt< bool > EnableBlockPlacementStats ("enable-block-placement-stats", cl::Hidden, cl::desc("Collect probability-driven block placement stats"))
 
static cl::opt< bool > DisableSSC ("disable-ssc", cl::Hidden, cl::desc("Disable Stack Slot Coloring"))
 
static cl::opt< bool > DisableMachineDCE ("disable-machine-dce", cl::Hidden, cl::desc("Disable Machine Dead Code Elimination"))
 
static cl::opt< bool > DisableEarlyIfConversion ("disable-early-ifcvt", cl::Hidden, cl::desc("Disable Early If-conversion"))
 
static cl::opt< bool > DisableMachineLICM ("disable-machine-licm", cl::Hidden, cl::desc("Disable Machine LICM"))
 
static cl::opt< bool > DisableMachineCSE ("disable-machine-cse", cl::Hidden, cl::desc("Disable Machine Common Subexpression Elimination"))
 
static cl::opt< cl::boolOrDefaultOptimizeRegAlloc ("optimize-regalloc", cl::Hidden, cl::desc("Enable optimized register allocation compilation path."))
 
static cl::opt< bool > DisablePostRAMachineLICM ("disable-postra-machine-licm", cl::Hidden, cl::desc("Disable Machine LICM"))
 
static cl::opt< bool > DisableMachineSink ("disable-machine-sink", cl::Hidden, cl::desc("Disable Machine Sinking"))
 
static cl::opt< bool > DisablePostRAMachineSink ("disable-postra-machine-sink", cl::Hidden, cl::desc("Disable PostRA Machine Sinking"))
 
static cl::opt< bool > DisableLSR ("disable-lsr", cl::Hidden, cl::desc("Disable Loop Strength Reduction Pass"))
 
static cl::opt< bool > DisableConstantHoisting ("disable-constant-hoisting", cl::Hidden, cl::desc("Disable ConstantHoisting"))
 
static cl::opt< bool > DisableCGP ("disable-cgp", cl::Hidden, cl::desc("Disable Codegen Prepare"))
 
static cl::opt< bool > DisableCopyProp ("disable-copyprop", cl::Hidden, cl::desc("Disable Copy Propagation pass"))
 
static cl::opt< bool > DisablePartialLibcallInlining ("disable-partial-libcall-inlining", cl::Hidden, cl::desc("Disable Partial Libcall Inlining"))
 
static cl::opt< bool > EnableImplicitNullChecks ("enable-implicit-null-checks", cl::desc("Fold null checks into faulting memory operations"), cl::init(false), cl::Hidden)
 
static cl::opt< bool > DisableMergeICmps ("disable-mergeicmps", cl::desc("Disable MergeICmps Pass"), cl::init(false), cl::Hidden)
 
static cl::opt< bool > PrintLSR ("print-lsr-output", cl::Hidden, cl::desc("Print LLVM IR produced by the loop-reduce pass"))
 
static cl::opt< bool > PrintISelInput ("print-isel-input", cl::Hidden, cl::desc("Print LLVM IR input to isel pass"))
 
static cl::opt< bool > PrintGCInfo ("print-gc", cl::Hidden, cl::desc("Dump garbage collector data"))
 
static cl::opt< cl::boolOrDefaultVerifyMachineCode ("verify-machineinstrs", cl::Hidden, cl::desc("Verify generated machine code"), cl::ZeroOrMore)
 
static cl::opt< cl::boolOrDefaultDebugifyAndStripAll ("debugify-and-strip-all-safe", cl::Hidden, cl::desc("Debugify MIR before and Strip debug after " "each pass except those known to be unsafe when debug info is present"), cl::ZeroOrMore)
 
static cl::opt< cl::boolOrDefaultDebugifyCheckAndStripAll ("debugify-check-and-strip-all-safe", cl::Hidden, cl::desc("Debugify MIR before, by checking and stripping the debug info after, " "each pass except those known to be unsafe when debug info is present"), cl::ZeroOrMore)
 
static cl::opt< RunOutlinerEnableMachineOutliner ("enable-machine-outliner", cl::desc("Enable the machine outliner"), cl::Hidden, cl::ValueOptional, cl::init(RunOutliner::TargetDefault), cl::values(clEnumValN(RunOutliner::AlwaysOutline, "always", "Run on all functions guaranteed to be beneficial"), clEnumValN(RunOutliner::NeverOutline, "never", "Disable all outlining"), clEnumValN(RunOutliner::AlwaysOutline, "", "")))
 
static cl::opt< cl::boolOrDefaultEnableFastISelOption ("fast-isel", cl::Hidden, cl::desc("Enable the \"fast\" instruction selector"))
 
static cl::opt< cl::boolOrDefaultEnableGlobalISelOption ("global-isel", cl::Hidden, cl::desc("Enable the \"global\" instruction selector"))
 
static cl::opt< bool > PrintAfterISel ("print-after-isel", cl::init(false), cl::Hidden, cl::desc("Print machine instrs after ISel"))
 
static cl::opt< GlobalISelAbortModeEnableGlobalISelAbort ("global-isel-abort", cl::Hidden, cl::desc("Enable abort calls when \"global\" instruction selection " "fails to lower/select an instruction"), cl::values(clEnumValN(GlobalISelAbortMode::Disable, "0", "Disable the abort"), clEnumValN(GlobalISelAbortMode::Enable, "1", "Enable the abort"), clEnumValN(GlobalISelAbortMode::DisableWithDiag, "2", "Disable the abort but emit a diagnostic on failure")))
 
static cl::opt< bool > FSNoFinalDiscrim ("fs-no-final-discrim", cl::init(false), cl::Hidden, cl::desc("Do not insert FS-AFDO discriminators before " "emit."))
 
static cl::opt< bool > DisableRAFSProfileLoader ("disable-ra-fsprofile-loader", cl::init(true), cl::Hidden, cl::desc("Disable MIRProfileLoader before RegAlloc"))
 
static cl::opt< bool > DisableLayoutFSProfileLoader ("disable-layout-fsprofile-loader", cl::init(true), cl::Hidden, cl::desc("Disable MIRProfileLoader before BlockPlacement"))
 
static cl::opt< std::string > FSProfileFile ("fs-profile-file", cl::init(""), cl::value_desc("filename"), cl::desc("Flow Sensitive profile file name."), cl::Hidden)
 
static cl::opt< std::string > FSRemappingFile ("fs-remapping-file", cl::init(""), cl::value_desc("filename"), cl::desc("Flow Sensitive profile remapping file name."), cl::Hidden)
 
static cl::opt< bool > MISchedPostRA ("misched-postra", cl::Hidden, cl::desc("Run MachineScheduler post regalloc (independent of preRA sched)"))
 
static cl::opt< bool > EarlyLiveIntervals ("early-live-intervals", cl::Hidden, cl::desc("Run live interval analysis earlier in the pipeline"))
 
static cl::opt< CFLAATypeUseCFLAA ("use-cfl-aa-in-codegen", cl::init(CFLAAType::None), cl::Hidden, cl::desc("Enable the new, experimental CFL alias analysis in CodeGen"), cl::values(clEnumValN(CFLAAType::None, "none", "Disable CFL-AA"), clEnumValN(CFLAAType::Steensgaard, "steens", "Enable unification-based CFL-AA"), clEnumValN(CFLAAType::Andersen, "anders", "Enable inclusion-based CFL-AA"), clEnumValN(CFLAAType::Both, "both", "Enable both variants of CFL-AA")))
 
static const char StartAfterOptName [] = "start-after"
 Option names for limiting the codegen pipeline. More...
 
static const char StartBeforeOptName [] = "start-before"
 
static const char StopAfterOptName [] = "stop-after"
 
static const char StopBeforeOptName [] = "stop-before"
 
static cl::opt< std::string > StartAfterOpt (StringRef(StartAfterOptName), cl::desc("Resume compilation after a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
 
static cl::opt< std::string > StartBeforeOpt (StringRef(StartBeforeOptName), cl::desc("Resume compilation before a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
 
static cl::opt< std::string > StopAfterOpt (StringRef(StopAfterOptName), cl::desc("Stop compilation after a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
 
static cl::opt< std::string > StopBeforeOpt (StringRef(StopBeforeOptName), cl::desc("Stop compilation before a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
 
static cl::opt< bool > EnableMachineFunctionSplitter ("enable-split-machine-functions", cl::Hidden, cl::desc("Split out cold blocks from machine functions based on profile " "information."))
 Enable the machine function splitter pass. More...
 
static cl::opt< bool > DisableExpandReductions ("disable-expand-reductions", cl::init(false), cl::Hidden, cl::desc("Disable the expand reduction intrinsics pass from running"))
 Disable the expand reductions pass for testing. More...
 
static cl::opt< RegisterRegAlloc::FunctionPassCtor, false, RegisterPassParser< RegisterRegAlloc > > RegAlloc ("regalloc", cl::Hidden, cl::init(&useDefaultRegisterAllocator), cl::desc("Register allocator to use"))
 
static llvm::once_flag InitializeDefaultRegisterAllocatorFlag
 A dummy default pass factory indicates whether the register allocator is overridden on the command line. More...
 
static RegisterRegAlloc defaultRegAlloc ("default", "pick register allocator based on -O option", useDefaultRegisterAllocator)
 

Macro Definition Documentation

◆ DISABLE_PASS

#define DISABLE_PASS (   Option,
  Name 
)
Value:
if (Option && P.contains(#Name)) \
return false;

◆ SET_BOOLEAN_OPTION

#define SET_BOOLEAN_OPTION (   Option)    Opt.Option = Option;

◆ SET_OPTION

#define SET_OPTION (   Option)
Value:
if (Option.getNumOccurrences()) \
Opt.Option = Option;

Function Documentation

◆ applyDisable()

static IdentifyingPassPtr applyDisable ( IdentifyingPassPtr  PassID,
bool  Override 
)
static

Allow standard passes to be disabled by command line options.

This supports simple binary flags that either suppress the pass or do nothing. i.e. -disable-mypass=false has no effect. These should be converted to boolOrDefault in order to use applyOverride.

Definition at line 263 of file TargetPassConfig.cpp.

Referenced by overridePass().

◆ getFSProfileFile()

static const std::string getFSProfileFile ( const TargetMachine TM)
static

◆ getFSRemappingFile()

static const std::string getFSRemappingFile ( const TargetMachine TM)
static

◆ getPassIDFromName()

static AnalysisID getPassIDFromName ( StringRef  PassName)
static

Definition at line 422 of file TargetPassConfig.cpp.

References getPassInfo(), llvm::PassInfo::getTypeInfo(), and PassName.

◆ getPassInfo()

static const PassInfo* getPassInfo ( StringRef  PassName)
static

◆ getPassNameAndInstanceNum()

static std::pair<StringRef, unsigned> getPassNameAndInstanceNum ( StringRef  PassName)
static

◆ initializeDefaultRegisterAllocatorOnce()

static void initializeDefaultRegisterAllocatorOnce ( )
static

◆ overridePass()

static IdentifyingPassPtr overridePass ( AnalysisID  StandardID,
IdentifyingPassPtr  TargetID 
)
static

Allow standard passes to be disabled by the command line, regardless of who is adding the pass.

StandardID is the pass identified in the standard pass pipeline and provided to addPass(). It may be a target-specific ID in the case that the target directly adds its own pass, but in that case we harmlessly fall through.

TargetID is the pass that the target has configured to override StandardID.

StandardID may be a pseudo ID. In that case TargetID is the name of the real pass to run. This allows multiple options to control a single pass depending on where in the pipeline that pass is added.

Definition at line 282 of file TargetPassConfig.cpp.

References applyDisable(), llvm::BranchFolderPassID, llvm::DeadMachineInstructionElimID, DisableBlockPlacement, DisableBranchFold, DisableCopyProp, DisableEarlyIfConversion, DisableEarlyTailDup, DisableMachineCSE, DisableMachineDCE, DisableMachineLICM, DisableMachineSink, DisablePostRAMachineLICM, DisablePostRAMachineSink, DisablePostRASched, DisableSSC, DisableTailDuplicate, llvm::EarlyIfConverterID, llvm::EarlyMachineLICMID, llvm::EarlyTailDuplicateID, llvm::MachineBlockPlacementID, llvm::MachineCopyPropagationID, llvm::MachineCSEID, llvm::MachineLICMID, llvm::MachineSinkingID, llvm::PostRAMachineSinkingID, llvm::PostRASchedulerID, llvm::StackSlotColoringID, and llvm::TailDuplicateID.

Referenced by llvm::TargetPassConfig::addPass(), and llvm::TargetPassConfig::isPassSubstitutedOrOverridden().

◆ registerPartialPipelineCallback()

static void registerPartialPipelineCallback ( PassInstrumentationCallbacks PIC,
LLVMTargetMachine LLVMTM 
)
static

◆ useDefaultRegisterAllocator()

static FunctionPass* useDefaultRegisterAllocator ( )
static

-regalloc=... command line option.

Definition at line 1109 of file TargetPassConfig.cpp.

Referenced by llvm::TargetPassConfig::addRegAssignAndRewriteFast(), and llvm::TargetPassConfig::createRegAllocPass().

Variable Documentation

◆ DebugifyAndStripAll

cl::opt<cl::boolOrDefault> DebugifyAndStripAll("debugify-and-strip-all-safe", cl::Hidden, cl::desc( "Debugify MIR before and Strip debug after " "each pass except those known to be unsafe when debug info is present"), cl::ZeroOrMore)
static

◆ DebugifyCheckAndStripAll

cl::opt<cl::boolOrDefault> DebugifyCheckAndStripAll("debugify-check-and-strip-all-safe", cl::Hidden, cl::desc( "Debugify MIR before, by checking and stripping the debug info after, " "each pass except those known to be unsafe when debug info is present"), cl::ZeroOrMore)
static

◆ defaultRegAlloc

RegisterRegAlloc defaultRegAlloc("default", "pick register allocator based on -O option", useDefaultRegisterAllocator)
static

◆ DisableBlockPlacement

cl::opt<bool> DisableBlockPlacement("disable-block-placement", cl::Hidden, cl::desc("Disable probability-driven block placement"))
static

◆ DisableBranchFold

cl::opt<bool> DisableBranchFold("disable-branch-fold", cl::Hidden, cl::desc("Disable branch folding"))
static

◆ DisableCGP

cl::opt<bool> DisableCGP("disable-cgp", cl::Hidden, cl::desc("Disable Codegen Prepare"))
static

◆ DisableConstantHoisting

cl::opt<bool> DisableConstantHoisting("disable-constant-hoisting", cl::Hidden, cl::desc("Disable ConstantHoisting"))
static

◆ DisableCopyProp

cl::opt<bool> DisableCopyProp("disable-copyprop", cl::Hidden, cl::desc("Disable Copy Propagation pass"))
static

◆ DisableEarlyIfConversion

cl::opt<bool> DisableEarlyIfConversion("disable-early-ifcvt", cl::Hidden, cl::desc("Disable Early If-conversion"))
static

◆ DisableEarlyTailDup

cl::opt<bool> DisableEarlyTailDup("disable-early-taildup", cl::Hidden, cl::desc("Disable pre-register allocation tail duplication"))
static

◆ DisableExpandReductions

cl::opt<bool> DisableExpandReductions("disable-expand-reductions", cl::init(false), cl::Hidden, cl::desc("Disable the expand reduction intrinsics pass from running"))
static

Disable the expand reductions pass for testing.

Referenced by llvm::TargetPassConfig::addIRPasses().

◆ DisableLayoutFSProfileLoader

cl::opt<bool> DisableLayoutFSProfileLoader("disable-layout-fsprofile-loader", cl::init(true), cl::Hidden, cl::desc("Disable MIRProfileLoader before BlockPlacement"))
static

◆ DisableLSR

cl::opt<bool> DisableLSR("disable-lsr", cl::Hidden, cl::desc("Disable Loop Strength Reduction Pass"))
static

◆ DisableMachineCSE

cl::opt<bool> DisableMachineCSE("disable-machine-cse", cl::Hidden, cl::desc("Disable Machine Common Subexpression Elimination"))
static

◆ DisableMachineDCE

cl::opt<bool> DisableMachineDCE("disable-machine-dce", cl::Hidden, cl::desc("Disable Machine Dead Code Elimination"))
static

◆ DisableMachineLICM

cl::opt<bool> DisableMachineLICM("disable-machine-licm", cl::Hidden, cl::desc("Disable Machine LICM"))
static

◆ DisableMachineSink

cl::opt<bool> DisableMachineSink("disable-machine-sink", cl::Hidden, cl::desc("Disable Machine Sinking"))
static

◆ DisableMergeICmps

cl::opt<bool> DisableMergeICmps("disable-mergeicmps", cl::desc("Disable MergeICmps Pass"), cl::init(false), cl::Hidden)
static

◆ DisablePartialLibcallInlining

cl::opt<bool> DisablePartialLibcallInlining("disable-partial-libcall-inlining", cl::Hidden, cl::desc("Disable Partial Libcall Inlining"))
static

◆ DisablePostRAMachineLICM

cl::opt<bool> DisablePostRAMachineLICM("disable-postra-machine-licm", cl::Hidden, cl::desc("Disable Machine LICM"))
static

◆ DisablePostRAMachineSink

cl::opt<bool> DisablePostRAMachineSink("disable-postra-machine-sink", cl::Hidden, cl::desc("Disable PostRA Machine Sinking"))
static

◆ DisablePostRASched

cl::opt<bool> DisablePostRASched("disable-post-ra", cl::Hidden, cl::desc("Disable Post Regalloc Scheduler"))
static

◆ DisableRAFSProfileLoader

cl::opt<bool> DisableRAFSProfileLoader("disable-ra-fsprofile-loader", cl::init(true), cl::Hidden, cl::desc("Disable MIRProfileLoader before RegAlloc"))
static

◆ DisableSSC

cl::opt<bool> DisableSSC("disable-ssc", cl::Hidden, cl::desc("Disable Stack Slot Coloring"))
static

◆ DisableTailDuplicate

cl::opt<bool> DisableTailDuplicate("disable-tail-duplicate", cl::Hidden, cl::desc("Disable tail duplication"))
static

◆ EarlyLiveIntervals

cl::opt<bool> EarlyLiveIntervals("early-live-intervals", cl::Hidden, cl::desc("Run live interval analysis earlier in the pipeline"))
static

◆ EnableBlockPlacementStats

cl::opt<bool> EnableBlockPlacementStats("enable-block-placement-stats", cl::Hidden, cl::desc("Collect probability-driven block placement stats"))
static

◆ EnableFastISelOption

cl::opt<cl::boolOrDefault> EnableFastISelOption("fast-isel", cl::Hidden, cl::desc("Enable the \"fast\" instruction selector"))
static

◆ EnableGlobalISelAbort

cl::opt<GlobalISelAbortMode> EnableGlobalISelAbort("global-isel-abort", cl::Hidden, cl::desc("Enable abort calls when \"global\" instruction selection " "fails to lower/select an instruction"), cl::values( clEnumValN(GlobalISelAbortMode::Disable, "0", "Disable the abort"), clEnumValN(GlobalISelAbortMode::Enable, "1", "Enable the abort"), clEnumValN(GlobalISelAbortMode::DisableWithDiag, "2", "Disable the abort but emit a diagnostic on failure")))
static

◆ EnableGlobalISelOption

cl::opt<cl::boolOrDefault> EnableGlobalISelOption("global-isel", cl::Hidden, cl::desc("Enable the \"global\" instruction selector"))
static

◆ EnableImplicitNullChecks

cl::opt<bool> EnableImplicitNullChecks("enable-implicit-null-checks", cl::desc("Fold null checks into faulting memory operations"), cl::init(false), cl::Hidden)
static

◆ EnableIPRA

cl::opt<bool> EnableIPRA("enable-ipra", cl::init(false), cl::Hidden, cl::desc("Enable interprocedural register allocation " "to reduce load/store at procedure calls."))
static

◆ EnableMachineFunctionSplitter

cl::opt<bool> EnableMachineFunctionSplitter("enable-split-machine-functions", cl::Hidden, cl::desc("Split out cold blocks from machine functions based on profile " "information."))
static

◆ EnableMachineOutliner

cl::opt<RunOutliner> EnableMachineOutliner("enable-machine-outliner", cl::desc("Enable the machine outliner"), cl::Hidden, cl::ValueOptional, cl::init(RunOutliner::TargetDefault), cl::values(clEnumValN(RunOutliner::AlwaysOutline, "always", "Run on all functions guaranteed to be beneficial"), clEnumValN(RunOutliner::NeverOutline, "never", "Disable all outlining"), clEnumValN(RunOutliner::AlwaysOutline, "", "")))
static

◆ FSNoFinalDiscrim

cl::opt<bool> FSNoFinalDiscrim("fs-no-final-discrim", cl::init(false), cl::Hidden, cl::desc("Do not insert FS-AFDO discriminators before " "emit."))
static

◆ FSProfileFile

cl::opt<std::string> FSProfileFile("fs-profile-file", cl::init(""), cl::value_desc("filename"), cl::desc("Flow Sensitive profile file name."), cl::Hidden)
static

Referenced by getFSProfileFile().

◆ FSRemappingFile

cl::opt<std::string> FSRemappingFile("fs-remapping-file", cl::init(""), cl::value_desc("filename"), cl::desc("Flow Sensitive profile remapping file name."), cl::Hidden)
static

Referenced by getFSRemappingFile().

◆ InitializeDefaultRegisterAllocatorFlag

llvm::once_flag InitializeDefaultRegisterAllocatorFlag
static

A dummy default pass factory indicates whether the register allocator is overridden on the command line.

Definition at line 1336 of file TargetPassConfig.cpp.

Referenced by llvm::TargetPassConfig::createRegAllocPass().

◆ MISchedPostRA

cl::opt<bool> MISchedPostRA("misched-postra", cl::Hidden, cl::desc( "Run MachineScheduler post regalloc (independent of preRA sched)"))
static

◆ OptimizeRegAlloc

cl::opt<cl::boolOrDefault> OptimizeRegAlloc("optimize-regalloc", cl::Hidden, cl::desc("Enable optimized register allocation compilation path."))
static

◆ PrintAfterISel

cl::opt<bool> PrintAfterISel("print-after-isel", cl::init(false), cl::Hidden, cl::desc("Print machine instrs after ISel"))
static

◆ PrintGCInfo

cl::opt<bool> PrintGCInfo("print-gc", cl::Hidden, cl::desc("Dump garbage collector data"))
static

◆ PrintISelInput

cl::opt<bool> PrintISelInput("print-isel-input", cl::Hidden, cl::desc("Print LLVM IR input to isel pass"))
static

◆ PrintLSR

cl::opt<bool> PrintLSR("print-lsr-output", cl::Hidden, cl::desc("Print LLVM IR produced by the loop-reduce pass"))
static

◆ RegAlloc

cl::opt<RegisterRegAlloc::FunctionPassCtor, false, RegisterPassParser<RegisterRegAlloc> > RegAlloc("regalloc", cl::Hidden, cl::init(&useDefaultRegisterAllocator), cl::desc("Register allocator to use"))
static

◆ StartAfterOpt

cl::opt<std::string> StartAfterOpt(StringRef(StartAfterOptName), cl::desc("Resume compilation after a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
static

◆ StartAfterOptName

const char StartAfterOptName[] = "start-after"
static

Option names for limiting the codegen pipeline.

Those are used in error reporting and we didn't want to duplicate their names all over the place.

Definition at line 223 of file TargetPassConfig.cpp.

Referenced by llvm::TargetPassConfig::getLimitedCodeGenPipelineReason(), and registerPartialPipelineCallback().

◆ StartBeforeOpt

cl::opt<std::string> StartBeforeOpt(StringRef(StartBeforeOptName), cl::desc("Resume compilation before a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
static

◆ StartBeforeOptName

const char StartBeforeOptName[] = "start-before"
static

◆ StopAfterOpt

cl::opt<std::string> StopAfterOpt(StringRef(StopAfterOptName), cl::desc("Stop compilation after a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
static

◆ StopAfterOptName

const char StopAfterOptName[] = "stop-after"
static

◆ StopBeforeOpt

cl::opt<std::string> StopBeforeOpt(StringRef(StopBeforeOptName), cl::desc("Stop compilation before a specific pass"), cl::value_desc("pass-name"), cl::init(""), cl::Hidden)
static

◆ StopBeforeOptName

const char StopBeforeOptName[] = "stop-before"
static

◆ UseCFLAA

cl::opt<CFLAAType> UseCFLAA("use-cfl-aa-in-codegen", cl::init(CFLAAType::None), cl::Hidden, cl::desc("Enable the new, experimental CFL alias analysis in CodeGen"), cl::values(clEnumValN(CFLAAType::None, "none", "Disable CFL-AA"), clEnumValN(CFLAAType::Steensgaard, "steens", "Enable unification-based CFL-AA"), clEnumValN(CFLAAType::Andersen, "anders", "Enable inclusion-based CFL-AA"), clEnumValN(CFLAAType::Both, "both", "Enable both variants of CFL-AA")))
static

◆ VerifyMachineCode

cl::opt<cl::boolOrDefault> VerifyMachineCode("verify-machineinstrs", cl::Hidden, cl::desc("Verify generated machine code"), cl::ZeroOrMore)
static
P
This currently compiles esp xmm0 movsd esp eax eax esp ret We should use not the dag combiner This is because dagcombine2 needs to be able to see through the X86ISD::Wrapper which DAGCombine can t really do The code for turning x load into a single vector load is target independent and should be moved to the dag combiner The code for turning x load into a vector load can only handle a direct load from a global or a direct load from the stack It should be generalized to handle any load from P
Definition: README-SSE.txt:411
PreferPredicateTy::Option
Option
Definition: LoopVectorize.cpp:212
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:52