LLVM: llvm::TargetOptions Class Reference (original) (raw)

#include "[llvm/Target/TargetOptions.h](TargetOptions%5F8h%5Fsource.html)"

Public Member Functions
TargetOptions ()
LLVM_ABI bool DisableFramePointerElim (const MachineFunction &MF) const
DisableFramePointerElim - This returns true if frame pointer elimination optimization should be disabled for the given machine function.
LLVM_ABI bool FramePointerIsReserved (const MachineFunction &MF) const
FramePointerIsReserved - This returns true if the frame pointer must always either point to a new frame record or be un-modified in the given function.
LLVM_ABI bool HonorSignDependentRoundingFPMath () const
HonorSignDependentRoundingFPMath - Return true if the codegen must assume that the rounding mode of the FPU can change from its default.
LLVM_ABI bool ShouldEmitDebugEntryValues () const
NOTE: There are targets that still do not support the debug entry values production.
void setFPDenormalMode (DenormalMode Mode)
void setFP32DenormalMode (DenormalMode Mode)
DenormalMode getRawFPDenormalMode () const
DenormalMode getRawFP32DenormalMode () const
LLVM_ABI DenormalMode getDenormalMode (const fltSemantics &FPType) const
Public Attributes
std::pair< int, int > BinutilsVersion {0, 0}
If greater than 0, override the default value of MCAsmInfo::BinutilsVersion.
unsigned NoInfsFPMath: 1
NoInfsFPMath - This flag is enabled when the -enable-no-infs-fp-math flag is specified on the command line.
unsigned NoNaNsFPMath: 1
NoNaNsFPMath - This flag is enabled when the -enable-no-nans-fp-math flag is specified on the command line.
unsigned NoTrappingFPMath: 1
NoTrappingFPMath - This flag is enabled when the -enable-no-trapping-fp-math is specified on the command line.
unsigned NoSignedZerosFPMath: 1
NoSignedZerosFPMath - This flag is enabled when the -enable-no-signed-zeros-fp-math is specified on the command line.
unsigned EnableAIXExtendedAltivecABI: 1
EnableAIXExtendedAltivecABI - This flag returns true when -vec-extabi is specified.
unsigned HonorSignDependentRoundingFPMathOption: 1
HonorSignDependentRoundingFPMath - This returns true when the -enable-sign-dependent-rounding-fp-math is specified.
unsigned NoZerosInBSS: 1
NoZerosInBSS - By default some codegens place zero-initialized data to .bss section.
unsigned GuaranteedTailCallOpt: 1
GuaranteedTailCallOpt - This flag is enabled when -tailcallopt is specified on the commandline.
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).
unsigned EnableFastISel: 1
EnableFastISel - This flag enables fast-path instruction selection which trades away generated code quality in favor of reducing compile time.
unsigned EnableGlobalISel: 1
EnableGlobalISel - This flag enables global instruction selection.
GlobalISelAbortMode GlobalISelAbort = GlobalISelAbortMode::Enable
EnableGlobalISelAbort - Control abort behaviour when global instruction selection fails to lower/select an instruction.
SwiftAsyncFramePointerMode SwiftAsyncFramePointer
Control when and how the Swift async frame pointer bit should be set.
unsigned UseInitArray: 1
UseInitArray - Use .init_array instead of .ctors for static constructors.
unsigned DisableIntegratedAS: 1
Disable the integrated assembler.
unsigned FunctionSections: 1
Emit functions into separate sections.
unsigned DataSections: 1
Emit data into separate sections.
unsigned IgnoreXCOFFVisibility: 1
Do not emit visibility attribute for xcoff.
unsigned XCOFFTracebackTable: 1
Emit XCOFF traceback table.
unsigned UniqueSectionNames: 1
unsigned UniqueBasicBlockSectionNames: 1
Use unique names for basic block sections.
unsigned SeparateNamedSections: 1
Emit named sections with the same name into different sections.
unsigned TrapUnreachable: 1
Emit target-specific trap instruction for 'unreachable' IR instructions.
unsigned NoTrapAfterNoreturn: 1
Do not emit a trap instruction for 'unreachable' IR instructions behind noreturn calls, even if TrapUnreachable is true.
unsigned TLSSize: 8
Bit size of immediate TLS offsets (0 == use the default).
unsigned EmulatedTLS: 1
EmulatedTLS - This flag enables emulated TLS model, using emutls function in the runtime library.
unsigned EnableTLSDESC: 1
EnableTLSDESC - This flag enables TLS Descriptors.
unsigned EnableIPRA: 1
This flag enables InterProcedural Register Allocation (IPRA).
unsigned EmitStackSizeSection: 1
Emit section containing metadata on function stack sizes.
unsigned EnableMachineOutliner: 1
Enables the MachineOutliner pass.
unsigned EnableMachineFunctionSplitter: 1
Enables the MachineFunctionSplitter pass.
unsigned EnableStaticDataPartitioning: 1
Enables the StaticDataSplitter pass.
unsigned SupportsDefaultOutlining: 1
Set if the target supports default outlining behaviour.
unsigned EmitAddrsig: 1
Emit address-significance table.
unsigned BBAddrMap: 1
BasicBlockSection BBSections = BasicBlockSection::None
Emit basic blocks into separate sections.
std::shared_ptr< MemoryBuffer > BBSectionsFuncListBuf
Memory Buffer that contains information on sampled basic blocks and used to selectively generate basic block sections.
unsigned EmitCallGraphSection: 1
Emit section containing call graph metadata.
unsigned EmitCallSiteInfo: 1
The flag enables call site info production.
unsigned SupportsDebugEntryValues: 1
Set if the target supports the debug entry values by default.
unsigned EnableDebugEntryValues: 1
When set to true, the EnableDebugEntryValues option forces production of debug entry values even if the target does not officially support it.
unsigned ValueTrackingVariableLocations: 1
unsigned ForceDwarfFrameSection: 1
Emit DWARF debug frame section.
unsigned XRayFunctionIndex: 1
Emit XRay Function Index section.
unsigned DebugStrictDwarf: 1
When set to true, don't use DWARF extensions in later DWARF versions.
unsigned Hotpatch: 1
Emit the hotpatch flag in CodeView debug.
unsigned PPCGenScalarMASSEntries: 1
Enables scalar MASS conversions.
unsigned JMCInstrument: 1
Enable JustMyCode instrumentation.
unsigned EnableCFIFixup: 1
Enable the CFIFixup pass.
unsigned MisExpect: 1
When set to true, enable MisExpect Diagnostics By default, it is set to false.
unsigned XCOFFReadOnlyPointers: 1
When set to true, const objects with relocatable address values are put into the RO data section.
unsigned VerifyArgABICompliance: 1
When set to true, call/return argument extensions of narrow integers are verified in the target backend if it cares about them.
std::string StackUsageOutput
Name of the stack usage file (i.e., .su file) if user passes -fstack-usage.
unsigned LoopAlignment = 0
If greater than 0, override TargetLoweringBase::PrefLoopAlignment.
FloatABI::ABIType FloatABIType = FloatABI::Default
FloatABIType - This setting is set by -float-abi=xxx option is specfied on the command line.
FPOpFusion::FPOpFusionMode AllowFPOpFusion = FPOpFusion::Standard
AllowFPOpFusion - This flag is set by the -fp-contract=xxx option.
ThreadModel::Model ThreadModel = ThreadModel::POSIX
ThreadModel - This flag specifies the type of threading model to assume for things like atomics.
EABI EABIVersion = EABI::Default
EABIVersion - This flag specifies the EABI version.
DebuggerKind DebuggerTuning = DebuggerKind::Default
Which debugger to tune for.
VectorLibrary VecLib = VectorLibrary::NoLibrary
Vector math library to use.
ExceptionHandling ExceptionModel = ExceptionHandling::None
What exception model to use.
MCTargetOptions MCOptions
Machine level options.
std::string ObjectFilenameForDebug
Stores the filename/path of the final .o/.obj file, to be written in the debug information.

Definition at line 119 of file TargetOptions.h.

llvm::TargetOptions::TargetOptions ( ) inline

Definition at line 121 of file TargetOptions.h.

References BBAddrMap, DataSections, DebugStrictDwarf, DisableIntegratedAS, EmitAddrsig, EmitCallGraphSection, EmitCallSiteInfo, EmitStackSizeSection, EmulatedTLS, EnableAIXExtendedAltivecABI, EnableCFIFixup, EnableDebugEntryValues, EnableFastISel, EnableGlobalISel, EnableIPRA, EnableMachineFunctionSplitter, EnableMachineOutliner, EnableStaticDataPartitioning, EnableTLSDESC, ForceDwarfFrameSection, FunctionSections, GuaranteedTailCallOpt, HonorSignDependentRoundingFPMathOption, Hotpatch, llvm::IEEE, IgnoreXCOFFVisibility, JMCInstrument, MisExpect, NoInfsFPMath, NoNaNsFPMath, NoSignedZerosFPMath, NoTrapAfterNoreturn, NoTrappingFPMath, NoZerosInBSS, PPCGenScalarMASSEntries, SeparateNamedSections, StackSymbolOrdering, SupportsDebugEntryValues, SupportsDefaultOutlining, TLSSize, TrapUnreachable, UniqueBasicBlockSectionNames, UniqueSectionNames, UseInitArray, ValueTrackingVariableLocations, VerifyArgABICompliance, XCOFFReadOnlyPointers, XCOFFTracebackTable, and XRayFunctionIndex.

DisableFramePointerElim()

DisableFramePointerElim - This returns true if frame pointer elimination optimization should be disabled for the given machine function.

Definition at line 24 of file TargetOptionsImpl.cpp.

References F, FP, llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::Attribute::getValueAsString(), llvm::MachineFrameInfo::hasCalls(), llvm::Attribute::isValid(), and llvm_unreachable.

Referenced by llvm::ARMFrameLowering::assignCalleeSavedSpillSlots(), llvm::AArch64RegisterInfo::cannotEliminateFrame(), llvm::ARMBaseRegisterInfo::cannotEliminateFrame(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::RISCVMachineFunctionInfo::getPushPopKind(), llvm::AArch64FrameLowering::hasFPImpl(), llvm::ARCFrameLowering::hasFPImpl(), llvm::ARMFrameLowering::hasFPImpl(), llvm::CSKYFrameLowering::hasFPImpl(), llvm::HexagonFrameLowering::hasFPImpl(), llvm::LoongArchFrameLowering::hasFPImpl(), llvm::M68kFrameLowering::hasFPImpl(), llvm::MipsFrameLowering::hasFPImpl(), llvm::MSP430FrameLowering::hasFPImpl(), llvm::RISCVFrameLowering::hasFPImpl(), llvm::SIFrameLowering::hasFPImpl(), llvm::SparcFrameLowering::hasFPImpl(), llvm::SystemZELFFrameLowering::hasFPImpl(), llvm::VEFrameLowering::hasFPImpl(), llvm::X86FrameLowering::hasFPImpl(), llvm::XCoreFrameLowering::hasFPImpl(), llvm::XtensaFrameLowering::hasFPImpl(), and llvm::PPCFrameLowering::needsFP().

FramePointerIsReserved()

FramePointerIsReserved - This returns true if the frame pointer must always either point to a new frame record or be un-modified in the given function.

Definition at line 40 of file TargetOptionsImpl.cpp.

References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Cases(), F, llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::Attribute::getValueAsString(), llvm::MachineFrameInfo::hasCalls(), and llvm::Attribute::isValid().

Referenced by llvm::ARMSubtarget::getPushPopSplitVariation(), llvm::X86RegisterInfo::getReservedRegs(), llvm::AArch64FrameLowering::isFPReserved(), and llvm::ARMFrameLowering::isFPReserved().

getDenormalMode()

getRawFP32DenormalMode()

DenormalMode llvm::TargetOptions::getRawFP32DenormalMode ( ) const inline

getRawFPDenormalMode()

DenormalMode llvm::TargetOptions::getRawFPDenormalMode ( ) const inline

HonorSignDependentRoundingFPMath()

bool TargetOptions::HonorSignDependentRoundingFPMath ( ) const

setFP32DenormalMode()

void llvm::TargetOptions::setFP32DenormalMode ( DenormalMode Mode) inline

setFPDenormalMode()

void llvm::TargetOptions::setFPDenormalMode ( DenormalMode Mode) inline

ShouldEmitDebugEntryValues()

bool TargetOptions::ShouldEmitDebugEntryValues ( ) const

NOTE: There are targets that still do not support the debug entry values production.

NOTE: There are targets that still do not support the debug entry values production and that is being controlled with the SupportsDebugEntryValues.

In addition, SCE debugger does not have the feature implemented, so prefer not to emit the debug entry values in that case. The EnableDebugEntryValues can be used for the testing purposes.

Definition at line 63 of file TargetOptionsImpl.cpp.

References DebuggerTuning, EnableDebugEntryValues, llvm::SCE, and SupportsDebugEntryValues.

AllowFPOpFusion

AllowFPOpFusion - This flag is set by the -fp-contract=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 401 of file TargetOptions.h.

Referenced by llvm::NVPTXTargetLowering::allowFMA().

BBAddrMap

BBSections

BBSectionsFuncListBuf

std::shared_ptr<MemoryBuffer> llvm::TargetOptions::BBSectionsFuncListBuf

Memory Buffer that contains information on sampled basic blocks and used to selectively generate basic block sections.

Definition at line 308 of file TargetOptions.h.

BinutilsVersion

std::pair<int, int> llvm::TargetOptions::BinutilsVersion {0, 0}

DataSections

unsigned llvm::TargetOptions::DataSections

DebuggerTuning

DebugStrictDwarf

unsigned llvm::TargetOptions::DebugStrictDwarf

When set to true, don't use DWARF extensions in later DWARF versions.

By default, it is set to false.

Definition at line 341 of file TargetOptions.h.

Referenced by TargetOptions().

DisableIntegratedAS

unsigned llvm::TargetOptions::DisableIntegratedAS

EABIVersion

EmitAddrsig

unsigned llvm::TargetOptions::EmitAddrsig

EmitCallGraphSection

unsigned llvm::TargetOptions::EmitCallGraphSection

EmitCallSiteInfo

unsigned llvm::TargetOptions::EmitCallSiteInfo

EmitStackSizeSection

unsigned llvm::TargetOptions::EmitStackSizeSection

EmulatedTLS

unsigned llvm::TargetOptions::EmulatedTLS

EnableAIXExtendedAltivecABI

unsigned llvm::TargetOptions::EnableAIXExtendedAltivecABI

EnableAIXExtendedAltivecABI - This flag returns true when -vec-extabi is specified.

The code generator is then able to use both volatile and nonvolitle vector registers. When false, the code generator only uses volatile vector registers which is the default setting on AIX.

Definition at line 186 of file TargetOptions.h.

Referenced by TargetOptions().

EnableCFIFixup

unsigned llvm::TargetOptions::EnableCFIFixup

EnableDebugEntryValues

unsigned llvm::TargetOptions::EnableDebugEntryValues

When set to true, the EnableDebugEntryValues option forces production of debug entry values even if the target does not officially support it.

Useful for testing purposes only. This flag should never be checked directly, always use ShouldEmitDebugEntryValues instead.

Definition at line 323 of file TargetOptions.h.

Referenced by ShouldEmitDebugEntryValues(), and TargetOptions().

EnableFastISel

unsigned llvm::TargetOptions::EnableFastISel

EnableGlobalISel

unsigned llvm::TargetOptions::EnableGlobalISel

EnableIPRA

unsigned llvm::TargetOptions::EnableIPRA

EnableMachineFunctionSplitter

unsigned llvm::TargetOptions::EnableMachineFunctionSplitter

EnableMachineOutliner

unsigned llvm::TargetOptions::EnableMachineOutliner

EnableStaticDataPartitioning

unsigned llvm::TargetOptions::EnableStaticDataPartitioning

EnableTLSDESC

unsigned llvm::TargetOptions::EnableTLSDESC

ExceptionModel

FloatABIType

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 383 of file TargetOptions.h.

Referenced by codegen(), and llvm::CSKYSubtarget::useHardFloatABI().

ForceDwarfFrameSection

unsigned llvm::TargetOptions::ForceDwarfFrameSection

FunctionSections

unsigned llvm::TargetOptions::FunctionSections

GlobalISelAbort

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 209 of file TargetOptions.h.

Referenced by llvm::PPCFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::eliminateCallFramePseudoInstr(), llvm::PPCFrameLowering::emitEpilogue(), llvm::AArch64CallLowering::isEligibleForTailCallOptimization(), llvm::AMDGPUCallLowering::isEligibleForTailCallOptimization(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), llvm::isInTailCallPosition(), llvm::SITargetLowering::LowerCall(), llvm::AArch64CallLowering::lowerCall(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerTailCall(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and TargetOptions().

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 195 of file TargetOptions.h.

Referenced by HonorSignDependentRoundingFPMath(), and TargetOptions().

Hotpatch

IgnoreXCOFFVisibility

unsigned llvm::TargetOptions::IgnoreXCOFFVisibility

JMCInstrument

unsigned llvm::TargetOptions::JMCInstrument

LoopAlignment

unsigned llvm::TargetOptions::LoopAlignment = 0

If greater than 0, override TargetLoweringBase::PrefLoopAlignment.

Definition at line 375 of file TargetOptions.h.

MCOptions

MisExpect

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 163 of file TargetOptions.h.

Referenced by TargetOptions().

NoNaNsFPMath

unsigned llvm::TargetOptions::NoNaNsFPMath

NoSignedZerosFPMath

unsigned llvm::TargetOptions::NoSignedZerosFPMath

NoTrapAfterNoreturn

unsigned llvm::TargetOptions::NoTrapAfterNoreturn

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 174 of file TargetOptions.h.

Referenced by TargetOptions().

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 201 of file TargetOptions.h.

Referenced by TargetOptions().

ObjectFilenameForDebug

std::string llvm::TargetOptions::ObjectFilenameForDebug

Stores the filename/path of the final .o/.obj file, to be written in the debug information.

This is used for emitting the CodeView S_OBJNAME record.

Definition at line 444 of file TargetOptions.h.

Referenced by codegen().

PPCGenScalarMASSEntries

unsigned llvm::TargetOptions::PPCGenScalarMASSEntries

SeparateNamedSections

unsigned llvm::TargetOptions::SeparateNamedSections

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 215 of file TargetOptions.h.

Referenced by TargetOptions().

StackUsageOutput

std::string llvm::TargetOptions::StackUsageOutput

Name of the stack usage file (i.e., .su file) if user passes -fstack-usage.

If empty, it can be implied that -fstack-usage is not passed on the command line.

Definition at line 372 of file TargetOptions.h.

SupportsDebugEntryValues

unsigned llvm::TargetOptions::SupportsDebugEntryValues

SupportsDefaultOutlining

unsigned llvm::TargetOptions::SupportsDefaultOutlining

SwiftAsyncFramePointer

ThreadModel

TLSSize

TrapUnreachable

unsigned llvm::TargetOptions::TrapUnreachable

UniqueBasicBlockSectionNames

unsigned llvm::TargetOptions::UniqueBasicBlockSectionNames

UniqueSectionNames

unsigned llvm::TargetOptions::UniqueSectionNames

UseInitArray

unsigned llvm::TargetOptions::UseInitArray

ValueTrackingVariableLocations

unsigned llvm::TargetOptions::ValueTrackingVariableLocations

VecLib

VerifyArgABICompliance

unsigned llvm::TargetOptions::VerifyArgABICompliance

When set to true, call/return argument extensions of narrow integers are verified in the target backend if it cares about them.

This is not done with internal tools like llc that run many tests that ignore (lack) these extensions.

Definition at line 367 of file TargetOptions.h.

Referenced by TargetOptions().

XCOFFReadOnlyPointers

unsigned llvm::TargetOptions::XCOFFReadOnlyPointers

When set to true, const objects with relocatable address values are put into the RO data section.

Definition at line 361 of file TargetOptions.h.

Referenced by TargetOptions().

XCOFFTracebackTable

unsigned llvm::TargetOptions::XCOFFTracebackTable

XRayFunctionIndex

unsigned llvm::TargetOptions::XRayFunctionIndex


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