diff options
Diffstat (limited to 'include/clang/Basic/LangOptions.h')
-rw-r--r-- | include/clang/Basic/LangOptions.h | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/include/clang/Basic/LangOptions.h b/include/clang/Basic/LangOptions.h deleted file mode 100644 index 736d4e0..0000000 --- a/include/clang/Basic/LangOptions.h +++ /dev/null @@ -1,190 +0,0 @@ -//===--- LangOptions.h - C Language Family Language Options -----*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -/// -/// \file -/// \brief Defines the clang::LangOptions interface. -/// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CLANG_BASIC_LANGOPTIONS_H -#define LLVM_CLANG_BASIC_LANGOPTIONS_H - -#include "clang/Basic/CommentOptions.h" -#include "clang/Basic/LLVM.h" -#include "clang/Basic/ObjCRuntime.h" -#include "clang/Basic/Sanitizers.h" -#include "clang/Basic/Visibility.h" -#include <string> -#include <vector> - -namespace clang { - -/// Bitfields of LangOptions, split out from LangOptions in order to ensure that -/// this large collection of bitfields is a trivial class type. -class LangOptionsBase { -public: - // Define simple language options (with no accessors). -#define LANGOPT(Name, Bits, Default, Description) unsigned Name : Bits; -#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) -#include "clang/Basic/LangOptions.def" - -protected: - // Define language options of enumeration type. These are private, and will - // have accessors (below). -#define LANGOPT(Name, Bits, Default, Description) -#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ - unsigned Name : Bits; -#include "clang/Basic/LangOptions.def" -}; - -/// \brief Keeps track of the various options that can be -/// enabled, which controls the dialect of C or C++ that is accepted. -class LangOptions : public LangOptionsBase { -public: - typedef clang::Visibility Visibility; - - enum GCMode { NonGC, GCOnly, HybridGC }; - enum StackProtectorMode { SSPOff, SSPOn, SSPStrong, SSPReq }; - - enum SignedOverflowBehaviorTy { - SOB_Undefined, // Default C standard behavior. - SOB_Defined, // -fwrapv - SOB_Trapping // -ftrapv - }; - - enum PragmaMSPointersToMembersKind { - PPTMK_BestCase, - PPTMK_FullGeneralitySingleInheritance, - PPTMK_FullGeneralityMultipleInheritance, - PPTMK_FullGeneralityVirtualInheritance - }; - - enum AddrSpaceMapMangling { ASMM_Target, ASMM_On, ASMM_Off }; - - enum MSVCMajorVersion { - MSVC2010 = 16, - MSVC2012 = 17, - MSVC2013 = 18, - MSVC2015 = 19 - }; - -public: - /// \brief Set of enabled sanitizers. - SanitizerSet Sanitize; - - /// \brief Paths to blacklist files specifying which objects - /// (files, functions, variables) should not be instrumented. - std::vector<std::string> SanitizerBlacklistFiles; - - clang::ObjCRuntime ObjCRuntime; - - std::string ObjCConstantStringClass; - - /// \brief The name of the handler function to be called when -ftrapv is - /// specified. - /// - /// If none is specified, abort (GCC-compatible behaviour). - std::string OverflowHandler; - - /// \brief The name of the current module. - std::string CurrentModule; - - /// \brief The name of the module that the translation unit is an - /// implementation of. Prevents semantic imports, but does not otherwise - /// treat this as the CurrentModule. - std::string ImplementationOfModule; - - /// \brief 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. - std::vector<std::string> ModuleFeatures; - - /// \brief Options for parsing comments. - CommentOptions CommentOpts; - - /// \brief A list of all -fno-builtin-* function names (e.g., memset). - std::vector<std::string> NoBuiltinFuncs; - - /// \brief Triples of the OpenMP targets that the host code codegen should - /// take into account in order to generate accurate offloading descriptors. - std::vector<llvm::Triple> OMPTargetTriples; - - /// \brief Name of the IR file that contains the result of the OpenMP target - /// host code generation. - std::string OMPHostIRFile; - - LangOptions(); - - // Define accessors/mutators for language options of enumeration type. -#define LANGOPT(Name, Bits, Default, Description) -#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \ - Type get##Name() const { return static_cast<Type>(Name); } \ - void set##Name(Type Value) { Name = static_cast<unsigned>(Value); } -#include "clang/Basic/LangOptions.def" - - bool isSignedOverflowDefined() const { - return getSignedOverflowBehavior() == SOB_Defined; - } - - bool isSubscriptPointerArithmetic() const { - return ObjCRuntime.isSubscriptPointerArithmetic() && - !ObjCSubscriptingLegacyRuntime; - } - - bool isCompatibleWithMSVC(MSVCMajorVersion MajorVersion) const { - return MSCompatibilityVersion >= MajorVersion * 10000000U; - } - - /// \brief Reset all of the options that are not considered when building a - /// module. - void resetNonModularOptions(); - - /// \brief Is this a libc/libm function that is no longer recognized as a - /// builtin because a -fno-builtin-* option has been specified? - bool isNoBuiltinFunc(const char *Name) const; -}; - -/// \brief Floating point control options -class FPOptions { -public: - unsigned fp_contract : 1; - - FPOptions() : fp_contract(0) {} - - FPOptions(const LangOptions &LangOpts) : - fp_contract(LangOpts.DefaultFPContract) {} -}; - -/// \brief OpenCL volatile options -class OpenCLOptions { -public: -#define OPENCLEXT(nm) unsigned nm : 1; -#include "clang/Basic/OpenCLExtensions.def" - - OpenCLOptions() { -#define OPENCLEXT(nm) nm = 0; -#include "clang/Basic/OpenCLExtensions.def" - } -}; - -/// \brief Describes the kind of translation unit being processed. -enum TranslationUnitKind { - /// \brief The translation unit is a complete translation unit. - TU_Complete, - /// \brief The translation unit is a prefix to a translation unit, and is - /// not complete. - TU_Prefix, - /// \brief The translation unit is a module. - TU_Module -}; - -} // end namespace clang - -#endif |