LLVM  7.0.0svn
Public Member Functions | Public Attributes | List of all members
llvm::TargetOptions Class Reference

#include "llvm/Target/TargetOptions.h"

Collaboration diagram for llvm::TargetOptions:
Collaboration graph
[legend]

Public Member Functions

 TargetOptions ()
 
bool DisableFramePointerElim (const MachineFunction &MF) const
 DisableFramePointerElim - This returns true if frame pointer elimination optimization should be disabled for the given machine function. More...
 
bool HonorSignDependentRoundingFPMath () const
 HonorSignDependentRoundingFPMath - Return true if the codegen must assume that the rounding mode of the FPU can change from its default. More...
 

Public Attributes

unsigned PrintMachineCode: 1
 PrintMachineCode - This flag is enabled when the -print-machineinstrs option is specified on the command line, and should enable debugging output from the code generator. More...
 
unsigned UnsafeFPMath: 1
 UnsafeFPMath - This flag is enabled when the -enable-unsafe-fp-math flag is specified on the command line. More...
 
unsigned NoInfsFPMath: 1
 NoInfsFPMath - This flag is enabled when the -enable-no-infs-fp-math flag is specified on the command line. More...
 
unsigned NoNaNsFPMath: 1
 NoNaNsFPMath - This flag is enabled when the -enable-no-nans-fp-math flag is specified on the command line. More...
 
unsigned NoTrappingFPMath: 1
 NoTrappingFPMath - This flag is enabled when the -enable-no-trapping-fp-math is specified on the command line. More...
 
unsigned NoSignedZerosFPMath: 1
 NoSignedZerosFPMath - This flag is enabled when the -enable-no-signed-zeros-fp-math is specified on the command line. More...
 
unsigned HonorSignDependentRoundingFPMathOption: 1
 HonorSignDependentRoundingFPMath - This returns true when the -enable-sign-dependent-rounding-fp-math is specified. More...
 
unsigned NoZerosInBSS: 1
 NoZerosInBSS - By default some codegens place zero-initialized data to .bss section. More...
 
unsigned GuaranteedTailCallOpt: 1
 GuaranteedTailCallOpt - This flag is enabled when -tailcallopt is specified on the commandline. More...
 
unsigned StackAlignmentOverride = 0
 StackAlignmentOverride - Override default stack alignment for target. More...
 
unsigned StackSymbolOrdering: 1
 StackSymbolOrdering - When true, this will allow CodeGen to order the local stack symbols (for code size, code locality, or any other heuristics). More...
 
unsigned EnableFastISel: 1
 EnableFastISel - This flag enables fast-path instruction selection which trades away generated code quality in favor of reducing compile time. More...
 
unsigned EnableGlobalISel: 1
 EnableGlobalISel - This flag enables global instruction selection. More...
 
unsigned UseInitArray: 1
 UseInitArray - Use .init_array instead of .ctors for static constructors. More...
 
unsigned DisableIntegratedAS: 1
 Disable the integrated assembler. More...
 
DebugCompressionType CompressDebugSections = DebugCompressionType::None
 Compress DWARF debug sections. More...
 
unsigned RelaxELFRelocations: 1
 
unsigned FunctionSections: 1
 Emit functions into separate sections. More...
 
unsigned DataSections: 1
 Emit data into separate sections. More...
 
unsigned UniqueSectionNames: 1
 
unsigned TrapUnreachable: 1
 Emit target-specific trap instruction for 'unreachable' IR instructions. More...
 
unsigned EmulatedTLS: 1
 EmulatedTLS - This flag enables emulated TLS model, using emutls function in the runtime library. More...
 
unsigned ExplicitEmulatedTLS: 1
 Whether -emulated-tls or -no-emulated-tls is set. More...
 
unsigned EnableIPRA: 1
 This flag enables InterProcedural Register Allocation (IPRA). More...
 
unsigned EmitStackSizeSection: 1
 Emit section containing metadata on function stack sizes. More...
 
FloatABI::ABIType FloatABIType = FloatABI::Default
 FloatABIType - This setting is set by -float-abi=xxx option is specfied on the command line. More...
 
FPOpFusion::FPOpFusionMode AllowFPOpFusion = FPOpFusion::Standard
 AllowFPOpFusion - This flag is set by the -fuse-fp-ops=xxx option. More...
 
ThreadModel::Model ThreadModel = ThreadModel::POSIX
 ThreadModel - This flag specifies the type of threading model to assume for things like atomics. More...
 
EABI EABIVersion = EABI::Default
 EABIVersion - This flag specifies the EABI version. More...
 
DebuggerKind DebuggerTuning = DebuggerKind::Default
 Which debugger to tune for. More...
 
FPDenormal::DenormalMode FPDenormalMode = FPDenormal::IEEE
 FPDenormalMode - This flags specificies which denormal numbers the code is permitted to require. More...
 
ExceptionHandling ExceptionModel = ExceptionHandling::None
 What exception model to use. More...
 
MCTargetOptions MCOptions
 Machine level options. More...
 

Detailed Description

Definition at line 99 of file TargetOptions.h.

Constructor & Destructor Documentation

◆ TargetOptions()

llvm::TargetOptions::TargetOptions ( )
inline

Definition at line 101 of file TargetOptions.h.

Member Function Documentation

◆ DisableFramePointerElim()

bool TargetOptions::DisableFramePointerElim ( const MachineFunction MF) const

◆ HonorSignDependentRoundingFPMath()

bool TargetOptions::HonorSignDependentRoundingFPMath ( ) const

HonorSignDependentRoundingFPMath - Return true if the codegen must assume that the rounding mode of the FPU can change from its default.

Definition at line 39 of file TargetOptionsImpl.cpp.

References HonorSignDependentRoundingFPMathOption, and UnsafeFPMath.

Referenced by GetNegatedExpression().

Member Data Documentation

◆ AllowFPOpFusion

FPOpFusion::FPOpFusionMode llvm::TargetOptions::AllowFPOpFusion = FPOpFusion::Standard

AllowFPOpFusion - This flag is set by the -fuse-fp-ops=xxx option.

This controls the creation of fused FP ops that store intermediate results in higher precision than IEEE allows (E.g. FMAs).

Fast mode - allows formation of fused FP ops whenever they're profitable. Standard mode - allow fusion only for 'blessed' FP ops. At present the only blessed op is the fmuladd intrinsic. In the future more blessed ops may be added. Strict mode - allow fusion only if/when it can be proven that the excess precision won't effect the result.

Note: This option only controls formation of fused ops by the optimizers. Fused operations that are explicitly specified (e.g. FMA via the llvm.fma.* intrinsic) will always be honored, regardless of the value of this option.

Definition at line 253 of file TargetOptions.h.

Referenced by llvm::NVPTXTargetLowering::allowFMA(), convertBuildVectorCastElt(), getOffsetFromIndices(), isCombineInstrCandidateFP(), isContractable(), isFMAddSubOrFMSubAdd(), and llvm::AArch64TargetLowering::isProfitableToHoist().

◆ CompressDebugSections

DebugCompressionType llvm::TargetOptions::CompressDebugSections = DebugCompressionType::None

Compress DWARF debug sections.

Definition at line 201 of file TargetOptions.h.

Referenced by llvm::LLVMTargetMachine::initAsmInfo().

◆ DataSections

unsigned llvm::TargetOptions::DataSections

Emit data into separate sections.

Definition at line 209 of file TargetOptions.h.

Referenced by computeCacheKey(), llvm::TargetMachine::getDataSections(), and llvm::WebAssemblyTargetMachine::WebAssemblyTargetMachine().

◆ DebuggerTuning

DebuggerKind llvm::TargetOptions::DebuggerTuning = DebuggerKind::Default

Which debugger to tune for.

Definition at line 263 of file TargetOptions.h.

Referenced by computeCacheKey(), and llvm::DwarfDebug::DwarfDebug().

◆ DisableIntegratedAS

unsigned llvm::TargetOptions::DisableIntegratedAS

Disable the integrated assembler.

Definition at line 198 of file TargetOptions.h.

Referenced by llvm::LLVMTargetMachine::initAsmInfo().

◆ EABIVersion

EABI llvm::TargetOptions::EABIVersion = EABI::Default

EABIVersion - This flag specifies the EABI version.

Definition at line 260 of file TargetOptions.h.

Referenced by llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(), and llvm::ARMTargetLowering::ARMTargetLowering().

◆ EmitStackSizeSection

unsigned llvm::TargetOptions::EmitStackSizeSection

Emit section containing metadata on function stack sizes.

Definition at line 227 of file TargetOptions.h.

Referenced by llvm::AsmPrinter::emitStackSizeSection(), and llvm::AsmPrinter::SetupMachineFunction().

◆ EmulatedTLS

unsigned llvm::TargetOptions::EmulatedTLS

EmulatedTLS - This flag enables emulated TLS model, using emutls function in the runtime library.

Definition at line 218 of file TargetOptions.h.

Referenced by llvm::EngineBuilder::selectTarget(), and llvm::TargetMachine::useEmulatedTLS().

◆ EnableFastISel

unsigned llvm::TargetOptions::EnableFastISel

EnableFastISel - This flag enables fast-path instruction selection which trades away generated code quality in favor of reducing compile time.

Definition at line 188 of file TargetOptions.h.

Referenced by llvm::MipsTargetLowering::createFastISel(), CreatePrologue(), LLVMCreateMCJITCompilerForModule(), llvm::OptLevelChanger::OptLevelChanger(), preassignSwiftErrorRegs(), promoteToConstantPool(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::TargetMachine::setFastISel(), and llvm::ARMSubtarget::useFastISel().

◆ EnableGlobalISel

unsigned llvm::TargetOptions::EnableGlobalISel

EnableGlobalISel - This flag enables global instruction selection.

Definition at line 191 of file TargetOptions.h.

Referenced by llvm::TargetPassConfig::addCoreISelPasses(), llvm::TargetPassConfig::isGlobalISelAbortEnabled(), and llvm::TargetMachine::setGlobalISel().

◆ EnableIPRA

unsigned llvm::TargetOptions::EnableIPRA

This flag enables InterProcedural Register Allocation (IPRA).

Definition at line 224 of file TargetOptions.h.

Referenced by llvm::TargetPassConfig::addMachinePasses(), llvm::TargetFrameLowering::determineCalleeSaves(), and llvm::TargetPassConfig::TargetPassConfig().

◆ ExceptionModel

ExceptionHandling llvm::TargetOptions::ExceptionModel = ExceptionHandling::None

◆ ExplicitEmulatedTLS

unsigned llvm::TargetOptions::ExplicitEmulatedTLS

Whether -emulated-tls or -no-emulated-tls is set.

Definition at line 221 of file TargetOptions.h.

Referenced by llvm::EngineBuilder::selectTarget(), and llvm::TargetMachine::useEmulatedTLS().

◆ FloatABIType

FloatABI::ABIType llvm::TargetOptions::FloatABIType = FloatABI::Default

FloatABIType - This setting is set by -float-abi=xxx option is specfied on the command line.

This setting may either be Default, Soft, or Hard. Default selects the target's default behavior. Soft selects the ABI for software floating point, but does not indicate that FP hardware may not be used. Such a combination is unfortunately popular (e.g. arm-apple-darwin). Hard presumes that the normal FP ABI is used.

Definition at line 235 of file TargetOptions.h.

Referenced by llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(), llvm::ARMTargetLowering::ARMTargetLowering(), checkFunctionsAttributeConsistency(), FPCCToARMCC(), and getComparePred().

◆ FPDenormalMode

FPDenormal::DenormalMode llvm::TargetOptions::FPDenormalMode = FPDenormal::IEEE

FPDenormalMode - This flags specificies which denormal numbers the code is permitted to require.

Definition at line 267 of file TargetOptions.h.

Referenced by checkFunctionsAttributeConsistency(), and llvm::TargetMachine::resetTargetOptions().

◆ FunctionSections

unsigned llvm::TargetOptions::FunctionSections

Emit functions into separate sections.

Definition at line 206 of file TargetOptions.h.

Referenced by computeCacheKey(), llvm::TargetMachine::getFunctionSections(), and llvm::WebAssemblyTargetMachine::WebAssemblyTargetMachine().

◆ GuaranteedTailCallOpt

unsigned llvm::TargetOptions::GuaranteedTailCallOpt

GuaranteedTailCallOpt - This flag is enabled when -tailcallopt is specified on the commandline.

When the flag is on, participating targets will perform tail call optimization on all calls which use the fastcc calling convention and which satisfy certain target-independent criteria (being at the end of a function, having the same return type as their parent function, etc.), using an alternate ABI if necessary.

Definition at line 174 of file TargetOptions.h.

Referenced by areCallingConvEligibleForTCO_64SVR4(), CallingConvSupported(), llvm::AArch64TargetLowering::CCAssignFnForReturn(), llvm::PPCFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::eliminateCallFramePseudoInstr(), llvm::PPCFrameLowering::emitEpilogue(), EnsureStackAlignment(), getMOVL(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), llvm::isInTailCallPosition(), isSortedByValueNo(), llvm::SITargetLowering::LowerCall(), MatchingStackOffset(), mayTailCallThisCC(), llvm::PPCFrameLowering::needsFP(), PrepareCall(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and shouldGuaranteeTCO().

◆ HonorSignDependentRoundingFPMathOption

unsigned llvm::TargetOptions::HonorSignDependentRoundingFPMathOption

HonorSignDependentRoundingFPMath - This returns true when the -enable-sign-dependent-rounding-fp-math is specified.

If this returns false (the default), the code generator is allowed to assume that the rounding behavior is the default (round-to-zero for all floating point to integer conversions, and round-to-nearest for all other arithmetic truncations). If this is enabled (set to true), the code generator must assume that the rounding mode may dynamically change.

Definition at line 160 of file TargetOptions.h.

Referenced by checkFunctionsAttributeConsistency(), and HonorSignDependentRoundingFPMath().

◆ MCOptions

MCTargetOptions llvm::TargetOptions::MCOptions

◆ NoInfsFPMath

unsigned llvm::TargetOptions::NoInfsFPMath

NoInfsFPMath - This flag is enabled when the -enable-no-infs-fp-math flag is specified on the command line.

When this flag is off (the default), the code generator is not allowed to assume the FP arithmetic arguments and results are never +-Infs.

Definition at line 134 of file TargetOptions.h.

Referenced by checkFunctionsAttributeConsistency(), PrepareCall(), and setFastFlags().

◆ NoNaNsFPMath

unsigned llvm::TargetOptions::NoNaNsFPMath

NoNaNsFPMath - This flag is enabled when the -enable-no-nans-fp-math flag is specified on the command line.

When this flag is off (the default), the code generator is not allowed to assume the FP arithmetic arguments and results are never NaNs.

Definition at line 140 of file TargetOptions.h.

Referenced by checkFunctionsAttributeConsistency(), combineFMinNumFMaxNum(), EmitVectorComparison(), PrepareCall(), and setFastFlags().

◆ NoSignedZerosFPMath

unsigned llvm::TargetOptions::NoSignedZerosFPMath

NoSignedZerosFPMath - This flag is enabled when the -enable-no-signed-zeros-fp-math is specified on the command line.

This specifies that optimizations are allowed to treat the sign of a zero argument or result as insignificant.

Definition at line 151 of file TargetOptions.h.

Referenced by isFMulNegTwo().

◆ NoTrappingFPMath

unsigned llvm::TargetOptions::NoTrappingFPMath

NoTrappingFPMath - This flag is enabled when the -enable-no-trapping-fp-math is specified on the command line.

This specifies that there are no trap handlers to handle exceptions.

Definition at line 145 of file TargetOptions.h.

Referenced by checkFunctionsAttributeConsistency().

◆ NoZerosInBSS

unsigned llvm::TargetOptions::NoZerosInBSS

NoZerosInBSS - By default some codegens place zero-initialized data to .bss section.

This flag disables such behaviour (necessary, e.g. for crt*.o compiling).

Definition at line 166 of file TargetOptions.h.

Referenced by llvm::TargetLoweringObjectFile::getKindForGlobal().

◆ PrintMachineCode

unsigned llvm::TargetOptions::PrintMachineCode

PrintMachineCode - This flag is enabled when the -print-machineinstrs option is specified on the command line, and should enable debugging output from the code generator.

Definition at line 117 of file TargetOptions.h.

Referenced by llvm::TargetMachine::shouldPrintMachineCode(), and llvm::TargetPassConfig::TargetPassConfig().

◆ RelaxELFRelocations

unsigned llvm::TargetOptions::RelaxELFRelocations

Definition at line 203 of file TargetOptions.h.

Referenced by computeCacheKey(), and llvm::LLVMTargetMachine::initAsmInfo().

◆ StackAlignmentOverride

unsigned llvm::TargetOptions::StackAlignmentOverride = 0

StackAlignmentOverride - Override default stack alignment for target.

Definition at line 177 of file TargetOptions.h.

Referenced by llvm::X86TargetMachine::getSubtargetImpl(), and llvm::MipsTargetMachine::getSubtargetImpl().

◆ StackSymbolOrdering

unsigned llvm::TargetOptions::StackSymbolOrdering

StackSymbolOrdering - When true, this will allow CodeGen to order the local stack symbols (for code size, code locality, or any other heuristics).

When false, the local symbols are left in whatever order they were generated. Default is true.

Definition at line 183 of file TargetOptions.h.

Referenced by AssignProtectedObjSet().

◆ ThreadModel

ThreadModel::Model llvm::TargetOptions::ThreadModel = ThreadModel::POSIX

ThreadModel - This flag specifies the type of threading model to assume for things like atomics.

Definition at line 257 of file TargetOptions.h.

◆ TrapUnreachable

unsigned llvm::TargetOptions::TrapUnreachable

◆ UniqueSectionNames

unsigned llvm::TargetOptions::UniqueSectionNames

◆ UnsafeFPMath

unsigned llvm::TargetOptions::UnsafeFPMath

◆ UseInitArray

unsigned llvm::TargetOptions::UseInitArray

The documentation for this class was generated from the following files: