clang: clang::LangOptionsBase Class Reference (original) (raw)

Bitfields of LangOptions, split out from LangOptions in order to ensure that this large collection of bitfields is a trivial class type. More...

#include "[clang/Basic/LangOptions.h](LangOptions%5F8h%5Fsource.html)"

Public Types
enum GCMode { NonGC, GCOnly, HybridGC }
enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq }
enum class TrivialAutoVarInitKind { Uninitialized, Zero, Pattern }
enum SignedOverflowBehaviorTy { SOB_Undefined, SOB_Defined, SOB_Trapping }
enum CompilingModuleKind { CMK_None, CMK_ModuleMap, CMK_HeaderUnit, CMK_ModuleInterface }
enum PragmaMSPointersToMembersKind { PPTMK_BestCase, PPTMK_FullGeneralitySingleInheritance, PPTMK_FullGeneralityMultipleInheritance, PPTMK_FullGeneralityVirtualInheritance }
enum DefaultCallingConvention { DCC_None, DCC_CDecl, DCC_FastCall, DCC_StdCall, DCC_VectorCall, DCC_RegCall, DCC_RtdCall }
enum AddrSpaceMapMangling { ASMM_Target, ASMM_On, ASMM_Off }
enum MSVCMajorVersion { MSVC2010 = 1600 , MSVC2012 = 1700 , MSVC2013 = 1800 , MSVC2015 = 1900 , MSVC2017 = 1910 , MSVC2017_5 = 1912 , MSVC2017_7 = 1914 , MSVC2019 = 1920 , MSVC2019_5 = 1925 , MSVC2019_8 = 1928 , MSVC2022_3 = 1933 }
enum SYCLMajorVersion { SYCL_None, SYCL_2017, SYCL_2020, SYCL_Default = SYCL_2020 }
enum HLSLLangStd { HLSL_Unset = 0 , HLSL_2015 = 2015 , HLSL_2016 = 2016 , HLSL_2017 = 2017 , HLSL_2018 = 2018 , HLSL_2021 = 2021 , HLSL_202x = 2028 , HLSL_202y = 2029 }
enum class ClangABI { Ver3_8, Ver4, Ver6, Ver7, Ver9, Ver11, Ver12, Ver14, Ver15, Ver17, Ver18, Ver19, Latest }
Clang versions with different platform ABI conformance. More...
enum class CoreFoundationABI { Unspecified, Standalone, ObjectiveC, Swift, Swift5_0, Swift4_2, Swift4_1 }
enum FPModeKind { FPM_Off, FPM_On, FPM_Fast, FPM_FastHonorPragmas }
enum FPExceptionModeKind { FPE_Ignore, FPE_MayTrap, FPE_Strict, FPE_Default }
Possible floating point exception behavior. More...
enum FPEvalMethodKind { FEM_Indeterminable = -1 , FEM_Source = 0 , FEM_Double = 1 , FEM_Extended = 2 , FEM_UnsetOnCommandLine = 3 }
Possible float expression evaluation method choices. More...
enum ExcessPrecisionKind { FPP_Standard, FPP_Fast, FPP_None }
enum class ExceptionHandlingKind { None, SjLj, WinEH, DwarfCFI, Wasm }
Possible exception handling behavior. More...
enum class LaxVectorConversionKind { None, Integer, All }
enum class AltivecSrcCompatKind { Mixed, GCC, XL, Default = Mixed }
enum class SignReturnAddressScopeKind { None, NonLeaf, All }
enum class SignReturnAddressKeyKind { AKey, BKey }
enum class ThreadModelKind { POSIX, Single }
enum class ExtendArgsKind { ExtendTo32, ExtendTo64 }
enum class GPUDefaultStreamKind { Legacy, PerThread }
enum OverflowPatternExclusionKind { None = 1 << 0 , All = 1 << 1 , AddSignedOverflowTest = 1 << 2 , AddUnsignedOverflowTest = 1 << 3 , NegUnsignedConst = 1 << 4 , PostDecrInWhile = 1 << 5 }
Exclude certain code patterns from being instrumented by arithmetic overflow sanitizers. More...
enum class DefaultVisiblityExportMapping { None, Explicit, All }
enum class VisibilityForcedKinds { ForceHidden, ForceProtected, ForceDefault, Source }
enum class VisibilityFromDLLStorageClassKinds { Keep, Default, Hidden, Protected }
enum class StrictFlexArraysLevelKind { Default = 0 , OneZeroOrIncomplete = 1 , ZeroOrIncomplete = 2 , IncompleteOnly = 3 }
enum ComplexRangeKind { CX_Full, CX_Improved, CX_Promoted, CX_Basic, CX_None }
Controls the various implementations for complex multiplication and. More...
enum class RegisterStaticDestructorsKind { All, ThreadLocal, None }
Controls which variables have static destructors registered. More...
using Visibility = clang::Visibility
using RoundingMode = llvm::RoundingMode
using CFBranchLabelSchemeKind = clang::CFBranchLabelSchemeKind
using MSVtorDispMode = clang::MSVtorDispMode

Bitfields of LangOptions, split out from LangOptions in order to ensure that this large collection of bitfields is a trivial class type.

Definition at line 70 of file LangOptions.h.

CFBranchLabelSchemeKind

MSVtorDispMode

RoundingMode

Visibility

AddrSpaceMapMangling

Enumerator
ASMM_Target
ASMM_On
ASMM_Off

Definition at line 132 of file LangOptions.h.

AltivecSrcCompatKind

ClangABI

Clang versions with different platform ABI conformance.

Enumerator
Ver3_8 Attempt to be ABI-compatible with code generated by Clang 3.8.x (SVN r257626). This causes <1 x long long> to be passed in an integer register instead of an SSE register on x64_64.
Ver4 Attempt to be ABI-compatible with code generated by Clang 4.0.x (SVN r291814). This causes move operations to be ignored when determining whether a class type can be passed or returned directly.
Ver6 Attempt to be ABI-compatible with code generated by Clang 6.0.x (SVN r321711). This causes determination of whether a type is standard-layout to ignore collisions between empty base classes and between base classes and member subobjects, which affects whether we reuse base class tail padding in some ABIs.
Ver7 Attempt to be ABI-compatible with code generated by Clang 7.0.x (SVN r338536). This causes alignof (C++) and _Alignof (C11) to be compatible with __alignof (i.e., return the preferred alignment) rather than returning the required alignment.
Ver9 Attempt to be ABI-compatible with code generated by Clang 9.0.x (SVN r351319). This causes vectors of __int128 to be passed in memory instead of passing in multiple scalar registers on x86_64 on Linux and NetBSD.
Ver11 Attempt to be ABI-compatible with code generated by Clang 11.0.x (git 2e10b7a39b93). This causes clang to pass unions with a 256-bit vector member on the stack instead of using registers, to not properly mangle substitutions for template names in some cases, and to mangle declaration template arguments without a cast to the parameter type even when that can lead to mangling collisions.
Ver12 Attempt to be ABI-compatible with code generated by Clang 12.0.x (git 8e464dd76bef). This causes clang to mangle lambdas within global-scope inline variables incorrectly.
Ver14 Attempt to be ABI-compatible with code generated by Clang 14.0.x. This causes clang to: mangle dependent nested names incorrectly. make trivial only those defaulted copy constructors with a parameter-type-list equivalent to the parameter-type-list of an implicit declaration.
Ver15 Attempt to be ABI-compatible with code generated by Clang 15.0.x. This causes clang to: Reverse the implementation for DR692, DR1395 and DR1432. pack non-POD members of packed structs. consider classes with defaulted special member functions non-pod.
Ver17 Attempt to be ABI-compatible with code generated by Clang 17.0.x. This causes clang to revert some fixes to its implementation of the Itanium name mangling scheme, with the consequence that overloaded function templates are mangled the same if they differ only by: constraints whether a non-type template parameter has a deduced type the parameter list of a template template parameter
Ver18 Attempt to be ABI-compatible with code generated by Clang 18.0.x. This causes clang to revert some fixes to the mangling of lambdas in the initializers of members of local classes.
Ver19 Attempt to be ABI-compatible with code generated by Clang 19.0.x. This causes clang to: Incorrectly mangle the 'base type' substitutions of the CXX construction vtable because it hasn't added 'type' as a substitution. Skip mangling enclosing class templates of member-like friend function templates.
Latest Conform to the underlying platform's C and C++ ABIs as closely as we can.

Definition at line 170 of file LangOptions.h.

CompilingModuleKind

Enumerator
CMK_None Not compiling a module interface at all.
CMK_ModuleMap Compiling a module from a module map.
CMK_HeaderUnit Compiling a module header unit.
CMK_ModuleInterface Compiling a C++ modules interface unit.

Definition at line 99 of file LangOptions.h.

ComplexRangeKind

Controls the various implementations for complex multiplication and.

Enumerator
CX_Full Implementation of complex division and multiplication using a call to runtime library functions(generally the case, but the BE might sometimes replace the library call if it knows enough about the potential range of the inputs). Overflow and non-finite values are handled by the library implementation. This is the default value.
CX_Improved Implementation of complex division offering an improved handling for overflow in intermediate calculations with no special handling for NaN and infinite values.
CX_Promoted Implementation of complex division using algebraic formulas at higher precision. Overflow is handled. Non-finite values are handled in some cases. If the target hardware does not have native support for a higher precision data type, an implementation for the complex operation will be used to provide improved guards against intermediate overflow, but overflow and underflow may still occur in some cases. NaN and infinite values are not handled.
CX_Basic Implementation of complex division and multiplication using algebraic formulas at source precision. No special handling to avoid overflow. NaN and infinite values are not handled.
CX_None No range rule is enabled.

Definition at line 441 of file LangOptions.h.

CoreFoundationABI

Enumerator
Unspecified No interoperability ABI has been specified.
Standalone CoreFoundation does not have any language interoperability.
ObjectiveC Interoperability with the ObjectiveC runtime.
Swift Interoperability with the latest known version of the Swift runtime.
Swift5_0 Interoperability with the Swift 5.0 runtime.
Swift4_2 Interoperability with the Swift 4.2 runtime.
Swift4_1 Interoperability with the Swift 4.1 runtime.

Definition at line 255 of file LangOptions.h.

DefaultCallingConvention

Enumerator
DCC_None
DCC_CDecl
DCC_FastCall
DCC_StdCall
DCC_VectorCall
DCC_RegCall
DCC_RtdCall

Definition at line 122 of file LangOptions.h.

DefaultVisiblityExportMapping

Enumerator
None
Explicit map only explicit default visibilities to exported
All map all default visibilities to exported

Definition at line 398 of file LangOptions.h.

ExceptionHandlingKind

Possible exception handling behavior.

Enumerator
None
SjLj
WinEH
DwarfCFI
Wasm

Definition at line 319 of file LangOptions.h.

ExcessPrecisionKind

Enumerator
FPP_Standard
FPP_Fast
FPP_None

Definition at line 316 of file LangOptions.h.

ExtendArgsKind

Enumerator
ExtendTo32 Integer arguments are sign or zero extended to 32/64 bits during default argument promotions.
ExtendTo64

Definition at line 367 of file LangOptions.h.

FPEvalMethodKind

Possible float expression evaluation method choices.

Enumerator
FEM_Indeterminable The evaluation method cannot be determined or is inconsistent for this target.
FEM_Source Use the declared type for fp arithmetic.
FEM_Double Use the type double for fp arithmetic.
FEM_Extended Use extended type for fp arithmetic.
FEM_UnsetOnCommandLine Used only for FE option processing; this is only used to indicate that the user did not specify an explicit evaluation method on the command line and so the target should be queried for its default evaluation method instead.

Definition at line 299 of file LangOptions.h.

FPExceptionModeKind

Possible floating point exception behavior.

Enumerator
FPE_Ignore Assume that floating-point exceptions are masked.
FPE_MayTrap Transformations do not cause new exceptions but may hide some.
FPE_Strict Strictly preserve the floating-point exception semantics.
FPE_Default Used internally to represent initial unspecified value.

Definition at line 287 of file LangOptions.h.

FPModeKind

Enumerator
FPM_Off
FPM_On
FPM_Fast
FPM_FastHonorPragmas

Definition at line 272 of file LangOptions.h.

GCMode

Enumerator
NonGC
GCOnly
HybridGC

Definition at line 79 of file LangOptions.h.

GPUDefaultStreamKind

Enumerator
Legacy Legacy default stream.
PerThread Per-thread default stream.

Definition at line 374 of file LangOptions.h.

HLSLLangStd

Enumerator
HLSL_Unset
HLSL_2015
HLSL_2016
HLSL_2017
HLSL_2018
HLSL_2021
HLSL_202x
HLSL_202y

Definition at line 158 of file LangOptions.h.

LaxVectorConversionKind

Enumerator
None Permit no implicit vector bitcasts.
Integer Permit vector bitcasts between integer vectors with different numbers of elements but the same total bit-width.
All Permit vector bitcasts between all vectors with the same total bit-width.

Definition at line 321 of file LangOptions.h.

MSVCMajorVersion

Enumerator
MSVC2010
MSVC2012
MSVC2013
MSVC2015
MSVC2017
MSVC2017_5
MSVC2017_7
MSVC2019
MSVC2019_5
MSVC2019_8
MSVC2022_3

Definition at line 135 of file LangOptions.h.

OverflowPatternExclusionKind

Exclude certain code patterns from being instrumented by arithmetic overflow sanitizers.

Enumerator
None Don't exclude any overflow patterns from sanitizers.
All Exclude all overflow patterns (below)
AddSignedOverflowTest if (a + b < a)
AddUnsignedOverflowTest if (a + b < a)
NegUnsignedConst -1UL
PostDecrInWhile while (count–)

Definition at line 383 of file LangOptions.h.

PragmaMSPointersToMembersKind

Enumerator
PPTMK_BestCase
PPTMK_FullGeneralitySingleInheritance
PPTMK_FullGeneralityMultipleInheritance
PPTMK_FullGeneralityVirtualInheritance

Definition at line 113 of file LangOptions.h.

RegisterStaticDestructorsKind

Controls which variables have static destructors registered.

Enumerator
All Register static destructors for all variables.
ThreadLocal Register static destructors only for thread-local variables.
None Don't register static destructors for any variables.

Definition at line 473 of file LangOptions.h.

SignedOverflowBehaviorTy

Enumerator
SOB_Undefined
SOB_Defined
SOB_Trapping

Definition at line 87 of file LangOptions.h.

SignReturnAddressKeyKind

Enumerator
AKey Return address signing uses APIA key.
BKey Return address signing uses APIB key.

Definition at line 353 of file LangOptions.h.

SignReturnAddressScopeKind

Enumerator
None No signing for any function.
NonLeaf Sign the return address of functions that spill LR.
All Sign the return address of all functions,.

Definition at line 344 of file LangOptions.h.

StackProtectorMode

Enumerator
SSPOff
SSPOn
SSPStrong
SSPReq

Definition at line 80 of file LangOptions.h.

StrictFlexArraysLevelKind

Enumerator
Default Any trailing array member is a FAM.
OneZeroOrIncomplete Any trailing array member of undefined, 0, or 1 size is a FAM.
ZeroOrIncomplete Any trailing array member of undefined or 0 size is a FAM.
IncompleteOnly Any trailing array member of undefined size is a FAM.

Definition at line 428 of file LangOptions.h.

SYCLMajorVersion

Enumerator
SYCL_None
SYCL_2017
SYCL_2020
SYCL_Default

Definition at line 149 of file LangOptions.h.

ThreadModelKind

Enumerator
POSIX POSIX Threads.
Single Single Threaded Environment.

Definition at line 360 of file LangOptions.h.

TrivialAutoVarInitKind

Enumerator
Uninitialized
Zero
Pattern

Definition at line 85 of file LangOptions.h.

VisibilityForcedKinds

Enumerator
ForceHidden Force hidden visibility.
ForceProtected Force protected visibility.
ForceDefault Force default visibility.
Source Don't alter the visibility.

Definition at line 406 of file LangOptions.h.

VisibilityFromDLLStorageClassKinds

Enumerator
Keep Keep the IR-gen assigned visibility.
Default Override the IR-gen assigned visibility with default visibility.
Hidden Override the IR-gen assigned visibility with hidden visibility.
Protected Override the IR-gen assigned visibility with protected visibility.

Definition at line 417 of file LangOptions.h.

CompilerInvocation

CompilerInvocationBase


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