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

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that is accepted. More...

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

Public Member Functions
LangOptions ()
bool isCompilingModule () const
Are we compiling a module?
bool isCompilingModuleImplementation () const
Are we compiling a module implementation?
bool trackLocalOwningModule () const
Do we need to track the owning module for a local declaration?
bool isSignedOverflowDefined () const
bool isSubscriptPointerArithmetic () const
bool isCompatibleWithMSVC (MSVCMajorVersion MajorVersion) const
bool isOverflowPatternExcluded (OverflowPatternExclusionKind Kind) const
void resetNonModularOptions ()
Reset all of the options that are not considered when building a module.
bool isNoBuiltinFunc (StringRef Name) const
Is this a libc/libm function that is no longer recognized as a builtin because a -fno-builtin-* option has been specified?
bool allowsNonTrivialObjCLifetimeQualifiers () const
True if any ObjC types may have non-trivial lifetime qualifiers.
bool assumeFunctionsAreConvergent () const
bool threadPrivateMemoryAtomicsAreUndefined () const
Return true if atomicrmw operations targeting allocations in private memory are undefined.
VersionTuple getOpenCLVersionTuple () const
Return the OpenCL C or C++ version as a VersionTuple.
unsigned getOpenCLCompatibleVersion () const
Return the OpenCL version that kernel language is compatible with.
std::string getOpenCLVersionString () const
Return the OpenCL C or C++ for OpenCL language name and version as a string.
bool requiresStrictPrototypes () const
Returns true if functions without prototypes or functions with an identifier list (aka K&R C functions) are not allowed.
bool implicitFunctionsAllowed () const
Returns true if implicit function declarations are allowed in the current language mode.
bool hasAtExit () const
Returns true if the language supports calling the 'atexit' function.
bool isImplicitIntRequired () const
Returns true if implicit int is part of the language requirements.
bool isImplicitIntAllowed () const
Returns true if implicit int is supported at all.
bool hasSignReturnAddress () const
Check if return address signing is enabled.
bool isSignReturnAddressWithAKey () const
Check if return address signing uses AKey.
bool isSignReturnAddressScopeAll () const
Check if leaf functions are also signed.
bool hasSjLjExceptions () const
bool hasSEHExceptions () const
bool hasDWARFExceptions () const
bool hasWasmExceptions () const
bool isSYCL () const
bool hasDefaultVisibilityExportMapping () const
bool isExplicitDefaultVisibilityExportMapping () const
bool isAllDefaultVisibilityExportMapping () const
bool hasGlobalAllocationFunctionVisibility () const
bool hasDefaultGlobalAllocationFunctionVisibility () const
bool hasProtectedGlobalAllocationFunctionVisibility () const
bool hasHiddenGlobalAllocationFunctionVisibility () const
void remapPathPrefix (SmallVectorImpl< char > &Path) const
Remap path prefix according to -fmacro-prefix-path option.
RoundingMode getDefaultRoundingMode () const
FPExceptionModeKind getDefaultExceptionMode () const
Public Attributes
LangStandard::Kind LangStd
The used language standard.
SanitizerSet Sanitize
Set of enabled sanitizers.
bool SanitizeCoverage = false
Is at least one coverage instrumentation type enabled.
std::vector< std::string > NoSanitizeFiles
Paths to files specifying which objects (files, functions, variables) should not be instrumented.
std::vector< std::string > XRayAlwaysInstrumentFiles
Paths to the XRay "always instrument" files specifying which objects (files, functions, variables) should be imbued with the XRay "always instrument" attribute.
std::vector< std::string > XRayNeverInstrumentFiles
Paths to the XRay "never instrument" files specifying which objects (files, functions, variables) should be imbued with the XRay "never instrument" attribute.
std::vector< std::string > XRayAttrListFiles
Paths to the XRay attribute list files, specifying which objects (files, functions, variables) should be imbued with the appropriate XRay attribute(s).
std::vector< std::string > ProfileListFiles
Paths to special case list files specifying which entities (files, functions) should or should not be instrumented.
clang::ObjCRuntime ObjCRuntime
CoreFoundationABI CFRuntime = CoreFoundationABI::Unspecified
std::string ObjCConstantStringClass
std::string OverflowHandler
The name of the handler function to be called when -ftrapv is specified.
std::string ModuleName
The module currently being compiled as specified by -fmodule-name.
std::string CurrentModule
The name of the current module, of which the main source file is a part.
std::vector< std::string > ModuleFeatures
The names of any features to enable in module 'requires' decls in addition to the hard-coded list in Module.cpp and the target features.
CommentOptions CommentOpts
Options for parsing comments.
std::vector< std::string > NoBuiltinFuncs
A list of all -fno-builtin-* function names (e.g., memset).
std::map< std::string, std::string, std::greater< std::string > > MacroPrefixMap
A prefix map for FILE, BASE_FILE and __builtin_FILE().
std::vector< llvm::Triple > OMPTargetTriples
Triples of the OpenMP targets that the host code codegen should take into account in order to generate accurate offloading descriptors.
std::string OMPHostIRFile
Name of the IR file that contains the result of the OpenMP target host code generation.
std::string CUID
The user provided compilation unit ID, if non-empty.
std::optional< TargetCXXABI::Kind > CXXABI
C++ ABI to compile with, if specified by the frontend through -fc++-abi=.
bool IsHeaderFile = false
Indicates whether the front-end is explicitly told that the input is a header file (i.e.
GPUDefaultStreamKind GPUDefaultStream
The default stream kind used for HIP kernel launching.
unsigned OverflowPatternExclusionMask = 0
Which overflow patterns should be excluded from sanitizer instrumentation.
std::vector< std::string > OverflowPatternExclusionValues
std::string RandstructSeed
The seed used by the randomize structure layout feature.
bool UseTargetPathSeparator = false
Indicates whether to use target's platform-specific file separator when FILE macro is used and when concatenating filename with directory or to use build environment environment's platform-specific file separator.
bool CheckNew = false
std::string OpenACCMacroOverride
bool NoWasmOpt = false
Additional Inherited Members
- Public Types inherited from clang::LangOptionsBase
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

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that is accepted.

Definition at line 499 of file LangOptions.h.

LangOptions::LangOptions ( )

allowsNonTrivialObjCLifetimeQualifiers()

bool clang::LangOptions::allowsNonTrivialObjCLifetimeQualifiers ( ) const inline

assumeFunctionsAreConvergent()

bool clang::LangOptions::assumeFunctionsAreConvergent ( ) const inline

getDefaultExceptionMode()

getDefaultRoundingMode()

RoundingMode clang::LangOptions::getDefaultRoundingMode ( ) const inline

getOpenCLCompatibleVersion()

unsigned LangOptions::getOpenCLCompatibleVersion ( ) const

Return the OpenCL version that kernel language is compatible with.

Definition at line 63 of file LangOptions.cpp.

Referenced by clang::Sema::ActOnNumericConstant(), clang::TargetInfo::adjust(), clang::OpenCLOptions::areProgramScopeVariablesSupported(), builtinIsSupported(), CheckExtVectorComponent(), ConvertDeclSpecToType(), clang::Sema::CreateBuiltinUnaryOp(), FixupInvocation(), GetFullTypeForDeclarator(), getOpenCLKernelParameterType(), clang::SemaOpenCL::handleAccessAttr(), clang::Sema::Initialize(), clang::OpenCLOptions::OpenCLOptionInfo::isAvailableIn(), clang::CodeGen::CodeGenModule::Release(), setLangDefaults(), clang::DeclSpec::SetStorageClassSpec(), and clang::TargetInfo::validateOpenCLTarget().

getOpenCLVersionString()

std::string LangOptions::getOpenCLVersionString ( ) const

getOpenCLVersionTuple()

VersionTuple LangOptions::getOpenCLVersionTuple ( ) const

hasAtExit()

bool clang::LangOptions::hasAtExit ( ) const inline

Returns true if the language supports calling the 'atexit' function.

Definition at line 732 of file LangOptions.h.

hasDefaultGlobalAllocationFunctionVisibility()

bool clang::LangOptions::hasDefaultGlobalAllocationFunctionVisibility ( ) const inline

hasDefaultVisibilityExportMapping()

bool clang::LangOptions::hasDefaultVisibilityExportMapping ( ) const inline

hasDWARFExceptions()

bool clang::LangOptions::hasDWARFExceptions ( ) const inline

hasGlobalAllocationFunctionVisibility()

bool clang::LangOptions::hasGlobalAllocationFunctionVisibility ( ) const inline

hasHiddenGlobalAllocationFunctionVisibility()

bool clang::LangOptions::hasHiddenGlobalAllocationFunctionVisibility ( ) const inline

hasProtectedGlobalAllocationFunctionVisibility()

bool clang::LangOptions::hasProtectedGlobalAllocationFunctionVisibility ( ) const inline

hasSEHExceptions()

bool clang::LangOptions::hasSEHExceptions ( ) const inline

hasSignReturnAddress()

bool clang::LangOptions::hasSignReturnAddress ( ) const inline

hasSjLjExceptions()

bool clang::LangOptions::hasSjLjExceptions ( ) const inline

hasWasmExceptions()

bool clang::LangOptions::hasWasmExceptions ( ) const inline

implicitFunctionsAllowed()

bool clang::LangOptions::implicitFunctionsAllowed ( ) const inline

isAllDefaultVisibilityExportMapping()

bool clang::LangOptions::isAllDefaultVisibilityExportMapping ( ) const inline

isCompatibleWithMSVC()

isCompilingModule()

bool clang::LangOptions::isCompilingModule ( ) const inline

isCompilingModuleImplementation()

bool clang::LangOptions::isCompilingModuleImplementation ( ) const inline

isExplicitDefaultVisibilityExportMapping()

bool clang::LangOptions::isExplicitDefaultVisibilityExportMapping ( ) const inline

isImplicitIntAllowed()

bool clang::LangOptions::isImplicitIntAllowed ( ) const inline

isImplicitIntRequired()

bool clang::LangOptions::isImplicitIntRequired ( ) const inline

isNoBuiltinFunc()

bool LangOptions::isNoBuiltinFunc ( StringRef Name ) const

isOverflowPatternExcluded()

isSignedOverflowDefined()

bool clang::LangOptions::isSignedOverflowDefined ( ) const inline

isSignReturnAddressScopeAll()

bool clang::LangOptions::isSignReturnAddressScopeAll ( ) const inline

isSignReturnAddressWithAKey()

bool clang::LangOptions::isSignReturnAddressWithAKey ( ) const inline

isSubscriptPointerArithmetic()

bool clang::LangOptions::isSubscriptPointerArithmetic ( ) const inline

isSYCL()

bool clang::LangOptions::isSYCL ( ) const inline

remapPathPrefix()

requiresStrictPrototypes()

bool clang::LangOptions::requiresStrictPrototypes ( ) const inline

resetNonModularOptions()

void LangOptions::resetNonModularOptions ( )

setLangDefaults()

Set language defaults for the given input language and language standard in the given LangOptions object.

Parameters

Opts - The LangOptions object to set up.
Lang - The input language.
T - The target triple.
Includes - If the language requires extra headers to be implicitly included, they will be appended to this list.
LangStd - The input language standard.

Definition at line 89 of file LangOptions.cpp.

References clang::Asm, clang::CUDA, clang::LangOptionsBase::FPM_Fast, clang::LangOptionsBase::FPM_FastHonorPragmas, clang::LangOptionsBase::FPM_On, clang::getDefaultLanguageStandard(), clang::LangStandard::getLangStandardForKind(), getOpenCLCompatibleVersion(), clang::HIP, clang::HLSL, clang::LangOptionsBase::HLSL_2015, clang::LangOptionsBase::HLSL_2016, clang::LangOptionsBase::HLSL_2017, clang::LangOptionsBase::HLSL_2018, clang::LangOptionsBase::HLSL_2021, clang::LangOptionsBase::HLSL_202x, clang::LangOptionsBase::HLSL_202y, clang::LangStandard::lang_unspecified, LangStd, clang::ObjC, clang::ObjCXX, Std, and clang::T.

threadPrivateMemoryAtomicsAreUndefined()

bool clang::LangOptions::threadPrivateMemoryAtomicsAreUndefined ( ) const inline

trackLocalOwningModule()

bool clang::LangOptions::trackLocalOwningModule ( ) const inline

CFRuntime

CheckNew

CommentOpts

CUID

std::string clang::LangOptions::CUID

CurrentModule

std::string clang::LangOptions::CurrentModule

The name of the current module, of which the main source file is a part.

If CompilingModule is set, we are compiling the interface of this module, otherwise we are compiling an implementation file of it. This starts as ModuleName in case -fmodule-name is provided and changes during compilation to reflect the current module.

Definition at line 554 of file LangOptions.h.

Referenced by clang::Sema::ActOnModuleDecl(), clang::Sema::ActOnModuleImport(), clang::FrontendAction::BeginSourceFile(), clang::ModuleMap::createHeaderUnit(), clang::ModuleMap::createModule(), clang::ModuleMap::createModuleForImplementationUnit(), clang::ModuleMap::createModuleForInterfaceUnit(), clang::DumpModuleInfoAction::ExecuteAction(), FixupInvocation(), clang::FrontendAction::getCurrentModule(), clang::PCHGenerator::getEmittingModule(), clang::Preprocessor::getModuleForLocation(), clang::Module::isForBuilding(), prepareToBuildModule(), and resetNonModularOptions().

CXXABI

GPUDefaultStream

IsHeaderFile

bool clang::LangOptions::IsHeaderFile = false

LangStd

MacroPrefixMap

std::map<std::string, std::string, std::greaterstd::string > clang::LangOptions::MacroPrefixMap

ModuleFeatures

std::vectorstd::string clang::LangOptions::ModuleFeatures

ModuleName

std::string clang::LangOptions::ModuleName

NoBuiltinFuncs

std::vectorstd::string clang::LangOptions::NoBuiltinFuncs

NoSanitizeFiles

std::vectorstd::string clang::LangOptions::NoSanitizeFiles

NoWasmOpt

ObjCConstantStringClass

std::string clang::LangOptions::ObjCConstantStringClass

ObjCRuntime

Definition at line 534 of file LangOptions.h.

Referenced by clang::Sema::ActOnLastBitfield(), checkArithmeticOnObjCPointer(), checkLanguageOptions(), CheckObjCTraitOperandConstraints(), CheckProtocolMethodDefs(), clang::CodeGen::CreateGNUObjCRuntime(), DiagnoseUnimplementedAccessor(), EncodeBitField(), clang::CodeGen::CodeGenModule::GetAddrOfRTTIDescriptor(), clang::ASTNameGenerator::Implementation::getClassSymbolPrefix(), getObjCPersonality(), getObjCXXPersonality(), hasUnwindExceptions(), clang::SemaObjC::ImplMethodsVsClassMethods(), InitializePredefinedMacros(), clang::Sema::MaybeBindToTemporary(), setARCRuntimeFunctionLinkage(), tryEmitSpecializedAllocInit(), and UseOptimizedSetter().

OMPHostIRFile

std::string clang::LangOptions::OMPHostIRFile

OMPTargetTriples

std::vectorllvm::Triple clang::LangOptions::OMPTargetTriples

OpenACCMacroOverride

std::string clang::LangOptions::OpenACCMacroOverride

OverflowHandler

std::string clang::LangOptions::OverflowHandler

The name of the handler function to be called when -ftrapv is specified.

If none is specified, abort (GCC-compatible behaviour).

Definition at line 544 of file LangOptions.h.

OverflowPatternExclusionMask

unsigned clang::LangOptions::OverflowPatternExclusionMask = 0

OverflowPatternExclusionValues

std::vectorstd::string clang::LangOptions::OverflowPatternExclusionValues

ProfileListFiles

std::vectorstd::string clang::LangOptions::ProfileListFiles

Paths to special case list files specifying which entities (files, functions) should or should not be instrumented.

Definition at line 532 of file LangOptions.h.

RandstructSeed

std::string clang::LangOptions::RandstructSeed

Sanitize

Set of enabled sanitizers.

Definition at line 505 of file LangOptions.h.

Referenced by addKCFIPass(), addSanitizers(), checkLanguageOptions(), clang::CodeGen::CodeGenModule::CodeGenModule(), clang::CodeGen::CodeGenModule::CreateFunctionTypeMetadataForIcall(), clang::targets::getAppleMachODefines(), clang::CompilerInvocation::getModuleHash(), clang::CodeGen::CodeGenTBAA::getTypeInfo(), clang::RecordDecl::mayInsertExtraPadding(), clang::CodeGen::CodeGenModule::NeedAllVtablesTypeId(), clang::CodeGen::CodeGenModule::Release(), clang::CodeGen::CodeGenVTables::RemoveHwasanMetadata(), clang::CodeGen::SanitizerMetadata::reportGlobal(), and shouldEmitLifetimeMarkers().

SanitizeCoverage

bool clang::LangOptions::SanitizeCoverage = false

UseTargetPathSeparator

bool clang::LangOptions::UseTargetPathSeparator = false

Indicates whether to use target's platform-specific file separator when FILE macro is used and when concatenating filename with directory or to use build environment environment's platform-specific file separator.

The plaform-specific path separator is the backslash() for Windows and forward slash (/) elsewhere.

Definition at line 610 of file LangOptions.h.

Referenced by clang::Preprocessor::processPathForFileMacro().

XRayAlwaysInstrumentFiles

std::vectorstd::string clang::LangOptions::XRayAlwaysInstrumentFiles

Paths to the XRay "always instrument" files specifying which objects (files, functions, variables) should be imbued with the XRay "always instrument" attribute.

WARNING: This is a deprecated field and will go away in the future.

Definition at line 517 of file LangOptions.h.

Referenced by resetNonModularOptions().

XRayAttrListFiles

std::vectorstd::string clang::LangOptions::XRayAttrListFiles

Paths to the XRay attribute list files, specifying which objects (files, functions, variables) should be imbued with the appropriate XRay attribute(s).

Definition at line 528 of file LangOptions.h.

XRayNeverInstrumentFiles

std::vectorstd::string clang::LangOptions::XRayNeverInstrumentFiles

Paths to the XRay "never instrument" files specifying which objects (files, functions, variables) should be imbued with the XRay "never instrument" attribute.

WARNING: This is a deprecated field and will go away in the future.

Definition at line 523 of file LangOptions.h.

Referenced by resetNonModularOptions().


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