clang  6.0.0svn
Public Types | Public Member Functions | Public Attributes | List of all members
clang::LangOptions Class Reference

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"

Inheritance diagram for clang::LangOptions:
Inheritance graph
[legend]
Collaboration diagram for clang::LangOptions:
Collaboration graph
[legend]

Public Types

enum  GCMode { NonGC, GCOnly, HybridGC }
 
enum  StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq }
 
enum  SignedOverflowBehaviorTy { SOB_Undefined, SOB_Defined, SOB_Trapping }
 
enum  CompilingModuleKind { CMK_None, CMK_ModuleMap, 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
}
 
enum  AddrSpaceMapMangling { ASMM_Target, ASMM_On, ASMM_Off }
 
enum  MSVCMajorVersion { MSVC2010 = 16, MSVC2012 = 17, MSVC2013 = 18, MSVC2015 = 19 }
 
enum  FPContractModeKind { FPC_Off, FPC_On, FPC_Fast }
 
typedef clang::Visibility Visibility
 

Public Member Functions

 LangOptions ()
 
bool isCompilingModule () const
 Are we compiling a module interface (.cppm or module map)? More...
 
bool trackLocalOwningModule () const
 Do we need to track the owning module for a local declaration? More...
 
bool isSignedOverflowDefined () const
 
bool isSubscriptPointerArithmetic () const
 
bool isCompatibleWithMSVC (MSVCMajorVersion MajorVersion) const
 
void resetNonModularOptions ()
 Reset all of the options that are not considered when building a module. More...
 
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? More...
 
bool allowsNonTrivialObjCLifetimeQualifiers () const
 True if any ObjC types may have non-trivial lifetime qualifiers. More...
 
bool assumeFunctionsAreConvergent () const
 

Public Attributes

SanitizerSet Sanitize
 Set of enabled sanitizers. More...
 
std::vector< std::string > SanitizerBlacklistFiles
 Paths to blacklist files specifying which objects (files, functions, variables) should not be instrumented. More...
 
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. More...
 
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. More...
 
clang::ObjCRuntime ObjCRuntime
 
std::string ObjCConstantStringClass
 
std::string OverflowHandler
 The name of the handler function to be called when -ftrapv is specified. More...
 
std::string CurrentModule
 The name of the current module, of which the main source file is a part. More...
 
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. More...
 
CommentOptions CommentOpts
 Options for parsing comments. More...
 
std::vector< std::string > NoBuiltinFuncs
 A list of all -fno-builtin-* function names (e.g., memset). More...
 
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. More...
 
std::string OMPHostIRFile
 Name of the IR file that contains the result of the OpenMP target host code generation. More...
 
bool IsHeaderFile
 Indicates whether the front-end is explicitly told that the input is a header file (i.e. More...
 

Detailed Description

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

Definition at line 48 of file LangOptions.h.

Member Typedef Documentation

◆ Visibility

Definition at line 50 of file LangOptions.h.

Member Enumeration Documentation

◆ AddrSpaceMapMangling

Enumerator
ASMM_Target 
ASMM_On 
ASMM_Off 

Definition at line 84 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_ModuleInterface 

Compiling a C++ modules TS module interface unit.

Definition at line 62 of file LangOptions.h.

◆ DefaultCallingConvention

Enumerator
DCC_None 
DCC_CDecl 
DCC_FastCall 
DCC_StdCall 
DCC_VectorCall 
DCC_RegCall 

Definition at line 75 of file LangOptions.h.

◆ FPContractModeKind

Enumerator
FPC_Off 
FPC_On 
FPC_Fast 

Definition at line 93 of file LangOptions.h.

◆ GCMode

Enumerator
NonGC 
GCOnly 
HybridGC 

Definition at line 52 of file LangOptions.h.

◆ MSVCMajorVersion

Enumerator
MSVC2010 
MSVC2012 
MSVC2013 
MSVC2015 

Definition at line 86 of file LangOptions.h.

◆ PragmaMSPointersToMembersKind

Enumerator
PPTMK_BestCase 
PPTMK_FullGeneralitySingleInheritance 
PPTMK_FullGeneralityMultipleInheritance 
PPTMK_FullGeneralityVirtualInheritance 

Definition at line 68 of file LangOptions.h.

◆ SignedOverflowBehaviorTy

Enumerator
SOB_Undefined 
SOB_Defined 
SOB_Trapping 

Definition at line 55 of file LangOptions.h.

◆ StackProtectorMode

Enumerator
SSPOff 
SSPOn 
SSPStrong 
SSPReq 

Definition at line 53 of file LangOptions.h.

Constructor & Destructor Documentation

◆ LangOptions()

LangOptions::LangOptions ( )

Definition at line 18 of file LangOptions.cpp.

Member Function Documentation

◆ allowsNonTrivialObjCLifetimeQualifiers()

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

True if any ObjC types may have non-trivial lifetime qualifiers.

Definition at line 198 of file LangOptions.h.

Referenced by DiagnoseBadFunctionCast(), and TryReinterpretCast().

◆ assumeFunctionsAreConvergent()

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

Definition at line 202 of file LangOptions.h.

References clang::OpenCL.

◆ isCompatibleWithMSVC()

bool clang::LangOptions::isCompatibleWithMSVC ( MSVCMajorVersion  MajorVersion) const
inline

◆ isCompilingModule()

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

◆ isNoBuiltinFunc()

bool LangOptions::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?

Definition at line 41 of file LangOptions.cpp.

References NoBuiltinFuncs.

◆ isSignedOverflowDefined()

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

Definition at line 176 of file LangOptions.h.

Referenced by DiagnoseBadShiftValues(), emitPointerArithmetic(), and tryEmitFMulAdd().

◆ isSubscriptPointerArithmetic()

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

Definition at line 180 of file LangOptions.h.

References clang::ObjCRuntime::isSubscriptPointerArithmetic().

◆ resetNonModularOptions()

void LangOptions::resetNonModularOptions ( )

Reset all of the options that are not considered when building a module.

Definition at line 25 of file LangOptions.cpp.

References CurrentModule, IsHeaderFile, SanitizerBlacklistFiles, XRayAlwaysInstrumentFiles, and XRayNeverInstrumentFiles.

◆ trackLocalOwningModule()

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

Do we need to track the owning module for a local declaration?

Definition at line 172 of file LangOptions.h.

Referenced by clang::Decl::hasLocalOwningModuleStorage().

Member Data Documentation

◆ CommentOpts

CommentOptions clang::LangOptions::CommentOpts

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

Definition at line 131 of file LangOptions.h.

Referenced by clang::Preprocessor::checkModuleIsAvailable(), ExpectFeatureIdentifierInfo(), clang::FrontendAction::getCurrentModule(), clang::Preprocessor::getModuleForLocation(), clang::PCHGenerator::HandleTranslationUnit(), clang::Sema::hasVisibleMemberSpecialization(), clang::CompilerInstance::loadModule(), ParseLangArgs(), prepareToBuildModule(), and resetNonModularOptions().

◆ IsHeaderFile

bool clang::LangOptions::IsHeaderFile

Indicates whether the front-end is explicitly told that the input is a header file (i.e.

-x c-header).

Definition at line 155 of file LangOptions.h.

Referenced by clang::CompilerInvocation::CreateFromArgs(), EvaluateHasIncludeNext(), and resetNonModularOptions().

◆ ModuleFeatures

std::vector<std::string> clang::LangOptions::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.

This list is sorted.

Definition at line 137 of file LangOptions.h.

Referenced by checkLanguageOptions(), hasFeature(), and ParseLangArgs().

◆ NoBuiltinFuncs

std::vector<std::string> clang::LangOptions::NoBuiltinFuncs

A list of all -fno-builtin-* function names (e.g., memset).

Definition at line 143 of file LangOptions.h.

Referenced by isNoBuiltinFunc(), and ParseLangArgs().

◆ ObjCConstantStringClass

std::string clang::LangOptions::ObjCConstantStringClass

Definition at line 119 of file LangOptions.h.

Referenced by GetConstantStringEntry(), ParseLangArgs(), and SymbolNameForMethod().

◆ ObjCRuntime

clang::ObjCRuntime clang::LangOptions::ObjCRuntime

◆ OMPHostIRFile

std::string clang::LangOptions::OMPHostIRFile

Name of the IR file that contains the result of the OpenMP target host code generation.

Definition at line 151 of file LangOptions.h.

Referenced by clang::CodeGen::loadOffloadInfoMetadata(), and ParseLangArgs().

◆ OMPTargetTriples

std::vector<llvm::Triple> clang::LangOptions::OMPTargetTriples

Triples of the OpenMP targets that the host code codegen should take into account in order to generate accurate offloading descriptors.

Definition at line 147 of file LangOptions.h.

Referenced by clang::CodeGen::createOffloadingBinaryDescriptorRegistration(), emitCommonOMPTargetDirective(), and ParseLangArgs().

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

Referenced by ParseLangArgs().

◆ Sanitize

SanitizerSet clang::LangOptions::Sanitize

◆ SanitizerBlacklistFiles

std::vector<std::string> clang::LangOptions::SanitizerBlacklistFiles

Paths to blacklist files specifying which objects (files, functions, variables) should not be instrumented.

Definition at line 105 of file LangOptions.h.

Referenced by ParseLangArgs(), and resetNonModularOptions().

◆ XRayAlwaysInstrumentFiles

std::vector<std::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.

Definition at line 110 of file LangOptions.h.

Referenced by ParseLangArgs(), and resetNonModularOptions().

◆ XRayNeverInstrumentFiles

std::vector<std::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.

Definition at line 115 of file LangOptions.h.

Referenced by ParseLangArgs(), and resetNonModularOptions().


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