clang 20.0.0git
Public Types | Friends | List of all members
clang::LangOptionsBase Class Reference

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"

Inheritance diagram for clang::LangOptionsBase:
Inheritance graph
[legend]

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 = 2029
}
 
enum class  ClangABI {
  Ver3_8 , Ver4 , Ver6 , Ver7 ,
  Ver9 , Ver11 , Ver12 , Ver14 ,
  Ver15 , Ver17 , Ver18 , 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 , AddOverflowTest = 1 << 2 , NegUnsignedConst = 1 << 3 ,
  PostDecrInWhile = 1 << 4
}
 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...
 
using Visibility = clang::Visibility
 
using RoundingMode = llvm::RoundingMode
 
using MSVtorDispMode = clang::MSVtorDispMode
 

Friends

class CompilerInvocation
 
class CompilerInvocationBase
 

Detailed Description

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 69 of file LangOptions.h.

Member Typedef Documentation

◆ MSVtorDispMode

Definition at line 118 of file LangOptions.h.

◆ RoundingMode

using clang::LangOptionsBase::RoundingMode = llvm::RoundingMode

Definition at line 75 of file LangOptions.h.

◆ Visibility

Definition at line 74 of file LangOptions.h.

Member Enumeration Documentation

◆ AddrSpaceMapMangling

Enumerator
ASMM_Target 
ASMM_On 
ASMM_Off 

Definition at line 130 of file LangOptions.h.

◆ AltivecSrcCompatKind

Enumerator
Mixed 
GCC 
XL 
Default 

Definition at line 321 of file LangOptions.h.

◆ 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.

Latest 

Conform to the underlying platform's C and C++ ABIs as closely as we can.

Definition at line 167 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 97 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 428 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 244 of file LangOptions.h.

◆ DefaultCallingConvention

Enumerator
DCC_None 
DCC_CDecl 
DCC_FastCall 
DCC_StdCall 
DCC_VectorCall 
DCC_RegCall 
DCC_RtdCall 

Definition at line 120 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 385 of file LangOptions.h.

◆ ExceptionHandlingKind

Possible exception handling behavior.

Enumerator
None 
SjLj 
WinEH 
DwarfCFI 
Wasm 

Definition at line 308 of file LangOptions.h.

◆ ExcessPrecisionKind

Enumerator
FPP_Standard 
FPP_Fast 
FPP_None 

Definition at line 305 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 356 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 288 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 276 of file LangOptions.h.

◆ FPModeKind

Enumerator
FPM_Off 
FPM_On 
FPM_Fast 
FPM_FastHonorPragmas 

Definition at line 261 of file LangOptions.h.

◆ GCMode

Enumerator
NonGC 
GCOnly 
HybridGC 

Definition at line 77 of file LangOptions.h.

◆ GPUDefaultStreamKind

Enumerator
Legacy 

Legacy default stream.

PerThread 

Per-thread default stream.

Definition at line 363 of file LangOptions.h.

◆ HLSLLangStd

Enumerator
HLSL_Unset 
HLSL_2015 
HLSL_2016 
HLSL_2017 
HLSL_2018 
HLSL_2021 
HLSL_202x 

Definition at line 156 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 310 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 133 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)

AddOverflowTest 

if (a + b < a)

NegUnsignedConst 

-1UL

PostDecrInWhile 

while (count–)

Definition at line 372 of file LangOptions.h.

◆ PragmaMSPointersToMembersKind

Enumerator
PPTMK_BestCase 
PPTMK_FullGeneralitySingleInheritance 
PPTMK_FullGeneralityMultipleInheritance 
PPTMK_FullGeneralityVirtualInheritance 

Definition at line 111 of file LangOptions.h.

◆ SignedOverflowBehaviorTy

Enumerator
SOB_Undefined 
SOB_Defined 
SOB_Trapping 

Definition at line 85 of file LangOptions.h.

◆ SignReturnAddressKeyKind

Enumerator
AKey 

Return address signing uses APIA key.

BKey 

Return address signing uses APIB key.

Definition at line 342 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 333 of file LangOptions.h.

◆ StackProtectorMode

Enumerator
SSPOff 
SSPOn 
SSPStrong 
SSPReq 

Definition at line 78 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 415 of file LangOptions.h.

◆ SYCLMajorVersion

Enumerator
SYCL_None 
SYCL_2017 
SYCL_2020 
SYCL_Default 

Definition at line 147 of file LangOptions.h.

◆ ThreadModelKind

Enumerator
POSIX 

POSIX Threads.

Single 

Single Threaded Environment.

Definition at line 349 of file LangOptions.h.

◆ TrivialAutoVarInitKind

Enumerator
Uninitialized 
Zero 
Pattern 

Definition at line 83 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 393 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 404 of file LangOptions.h.

Friends And Related Function Documentation

◆ CompilerInvocation

friend class CompilerInvocation
friend

Definition at line 70 of file LangOptions.h.

◆ CompilerInvocationBase

friend class CompilerInvocationBase
friend

Definition at line 71 of file LangOptions.h.


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