Home | History | Annotate | Download | only in Basic
      1 //===--- LangOptions.def - Language option database -------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file defines the language options. Users of this file must
     11 // define the LANGOPT macro to make use of this information.
     12 // Optionally, the user may also define BENIGN_LANGOPT
     13 // (for options that don't affect the construction of the AST in an
     14 // incompatible way), ENUM_LANGOPT (for options that have enumeration,
     15 // rather than unsigned, type), BENIGN_ENUM_LANGOPT (for benign
     16 // options that have enumeration type), and VALUE_LANGOPT is a language option
     17 // that describes a value rather than a flag.
     18 //
     19 //===----------------------------------------------------------------------===//
     20 #ifndef LANGOPT
     21 #  error Define the LANGOPT macro to handle language options
     22 #endif
     23 
     24 #ifndef VALUE_LANGOPT
     25 #  define VALUE_LANGOPT(Name, Bits, Default, Description) \
     26      LANGOPT(Name, Bits, Default, Description)
     27 #endif
     28 
     29 #ifndef BENIGN_LANGOPT
     30 #  define BENIGN_LANGOPT(Name, Bits, Default, Description) \
     31      LANGOPT(Name, Bits, Default, Description)
     32 #endif
     33 
     34 #ifndef ENUM_LANGOPT
     35 #  define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
     36      LANGOPT(Name, Bits, Default, Description)
     37 #endif
     38 
     39 #ifndef BENIGN_ENUM_LANGOPT
     40 #  define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
     41      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
     42 #endif
     43 
     44 LANGOPT(C99               , 1, 0, "C99")
     45 LANGOPT(C11               , 1, 0, "C11")
     46 LANGOPT(MSVCCompat        , 1, 0, "Microsoft Visual C++ full compatibility mode")
     47 LANGOPT(MicrosoftExt      , 1, 0, "Microsoft C++ extensions")
     48 LANGOPT(AsmBlocks         , 1, 0, "Microsoft inline asm blocks")
     49 LANGOPT(Borland           , 1, 0, "Borland extensions")
     50 LANGOPT(CPlusPlus         , 1, 0, "C++")
     51 LANGOPT(CPlusPlus11       , 1, 0, "C++11")
     52 LANGOPT(CPlusPlus1y       , 1, 0, "C++1y")
     53 LANGOPT(CPlusPlus1z       , 1, 0, "C++1z")
     54 LANGOPT(ObjC1             , 1, 0, "Objective-C 1")
     55 LANGOPT(ObjC2             , 1, 0, "Objective-C 2")
     56 BENIGN_LANGOPT(ObjCDefaultSynthProperties , 1, 0,
     57                "Objective-C auto-synthesized properties")
     58 BENIGN_LANGOPT(EncodeExtendedBlockSig , 1, 0,
     59                "Encoding extended block type signature")
     60 BENIGN_LANGOPT(ObjCInferRelatedResultType , 1, 1,
     61                "Objective-C related result type inference")
     62 LANGOPT(Trigraphs         , 1, 0,"trigraphs")
     63 LANGOPT(LineComment       , 1, 0, "'//' comments")
     64 LANGOPT(Bool              , 1, 0, "bool, true, and false keywords")
     65 LANGOPT(Half              , 1, 0, "half keyword")
     66 LANGOPT(WChar             , 1, CPlusPlus, "wchar_t keyword")
     67 BENIGN_LANGOPT(DollarIdents   , 1, 1, "'$' in identifiers")
     68 BENIGN_LANGOPT(AsmPreprocessor, 1, 0, "preprocessor in asm mode")
     69 BENIGN_LANGOPT(GNUMode        , 1, 1, "GNU extensions")
     70 LANGOPT(GNUKeywords       , 1, 1, "GNU keywords")
     71 BENIGN_LANGOPT(ImplicitInt, 1, !C99 && !CPlusPlus, "C89 implicit 'int'")
     72 LANGOPT(Digraphs          , 1, 0, "digraphs")
     73 BENIGN_LANGOPT(HexFloats  , 1, C99, "C99 hexadecimal float constants")
     74 LANGOPT(CXXOperatorNames  , 1, 0, "C++ operator name keywords")
     75 LANGOPT(AppleKext         , 1, 0, "Apple kext support")
     76 BENIGN_LANGOPT(PascalStrings, 1, 0, "Pascal string support")
     77 LANGOPT(WritableStrings   , 1, 0, "writable string support")
     78 LANGOPT(ConstStrings      , 1, 0, "const-qualified string support")
     79 LANGOPT(LaxVectorConversions , 1, 1, "lax vector conversions")
     80 LANGOPT(AltiVec           , 1, 0, "AltiVec-style vector initializers")
     81 LANGOPT(Exceptions        , 1, 0, "exception handling")
     82 LANGOPT(ObjCExceptions    , 1, 0, "Objective-C exceptions")
     83 LANGOPT(CXXExceptions     , 1, 0, "C++ exceptions")
     84 LANGOPT(SjLjExceptions    , 1, 0, "setjmp-longjump exception handling")
     85 LANGOPT(TraditionalCPP    , 1, 0, "traditional CPP emulation")
     86 LANGOPT(RTTI              , 1, 1, "run-time type information")
     87 LANGOPT(RTTIData          , 1, 1, "emit run-time type information data")
     88 LANGOPT(MSBitfields       , 1, 0, "Microsoft-compatible structure layout")
     89 LANGOPT(Freestanding, 1, 0, "freestanding implementation")
     90 LANGOPT(NoBuiltin         , 1, 0, "disable builtin functions")
     91 LANGOPT(NoMathBuiltin     , 1, 0, "disable math builtin functions")
     92 
     93 BENIGN_LANGOPT(ThreadsafeStatics , 1, 1, "thread-safe static initializers")
     94 LANGOPT(POSIXThreads      , 1, 0, "POSIX thread support")
     95 LANGOPT(Blocks            , 1, 0, "blocks extension to C")
     96 BENIGN_LANGOPT(EmitAllDecls      , 1, 0, "support for emitting all declarations")
     97 LANGOPT(MathErrno         , 1, 1, "errno support for math functions")
     98 BENIGN_LANGOPT(HeinousExtensions , 1, 0, "Extensions that we really don't like and may be ripped out at any time")
     99 LANGOPT(Modules           , 1, 0, "modules extension to C")
    100 LANGOPT(ModulesDeclUse    , 1, 0, "require declaration of module uses")
    101 LANGOPT(ModulesSearchAll  , 1, 1, "search even non-imported modules to find unresolved references")
    102 LANGOPT(ModulesStrictDeclUse, 1, 0, "require declaration of module uses and all headers to be in modules")
    103 LANGOPT(ModulesErrorRecovery, 1, 1, "automatically import modules as needed when performing error recovery")
    104 LANGOPT(Optimize          , 1, 0, "__OPTIMIZE__ predefined macro")
    105 LANGOPT(OptimizeSize      , 1, 0, "__OPTIMIZE_SIZE__ predefined macro")
    106 LANGOPT(Static            , 1, 0, "__STATIC__ predefined macro (as opposed to __DYNAMIC__)")
    107 VALUE_LANGOPT(PackStruct  , 32, 0,
    108               "default struct packing maximum alignment")
    109 VALUE_LANGOPT(PICLevel    , 2, 0, "__PIC__ level")
    110 VALUE_LANGOPT(PIELevel    , 2, 0, "__PIE__ level")
    111 LANGOPT(GNUInline         , 1, 0, "GNU inline semantics")
    112 LANGOPT(NoInlineDefine    , 1, 0, "__NO_INLINE__ predefined macro")
    113 LANGOPT(Deprecated        , 1, 0, "__DEPRECATED predefined macro")
    114 LANGOPT(FastMath          , 1, 0, "__FAST_MATH__ predefined macro")
    115 LANGOPT(FiniteMathOnly    , 1, 0, "__FINITE_MATH_ONLY__ predefined macro")
    116 
    117 BENIGN_LANGOPT(ObjCGCBitmapPrint , 1, 0, "printing of GC's bitmap layout for __weak/__strong ivars")
    118 
    119 BENIGN_LANGOPT(AccessControl     , 1, 1, "C++ access control")
    120 LANGOPT(CharIsSigned      , 1, 1, "signed char")
    121 LANGOPT(ShortWChar        , 1, 0, "unsigned short wchar_t")
    122 ENUM_LANGOPT(MSPointerToMemberRepresentationMethod, PragmaMSPointersToMembersKind, 2, PPTMK_BestCase, "member-pointer representation method")
    123 
    124 LANGOPT(ShortEnums        , 1, 0, "short enum types")
    125 
    126 LANGOPT(OpenCL            , 1, 0, "OpenCL")
    127 LANGOPT(OpenCLVersion     , 32, 0, "OpenCL version")
    128 LANGOPT(NativeHalfType    , 1, 0, "Native half type support")
    129 LANGOPT(CUDA              , 1, 0, "CUDA")
    130 LANGOPT(OpenMP            , 1, 0, "OpenMP support")
    131 LANGOPT(Renderscript      , 1, 0, "RenderScript")
    132 
    133 LANGOPT(AssumeSaneOperatorNew , 1, 1, "implicit __attribute__((malloc)) for C++'s new operators")
    134 LANGOPT(SizedDeallocation , 1, 0, "enable sized deallocation functions")
    135 BENIGN_LANGOPT(ElideConstructors , 1, 1, "C++ copy constructor elision")
    136 BENIGN_LANGOPT(DumpRecordLayouts , 1, 0, "dumping the layout of IRgen'd records")
    137 BENIGN_LANGOPT(DumpRecordLayoutsSimple , 1, 0, "dumping the layout of IRgen'd records in a simple form")
    138 BENIGN_LANGOPT(DumpVTableLayouts , 1, 0, "dumping the layouts of emitted vtables")
    139 LANGOPT(NoConstantCFStrings , 1, 0, "no constant CoreFoundation strings")
    140 BENIGN_LANGOPT(InlineVisibilityHidden , 1, 0, "hidden default visibility for inline C++ methods")
    141 BENIGN_LANGOPT(ParseUnknownAnytype, 1, 0, "__unknown_anytype")
    142 BENIGN_LANGOPT(DebuggerSupport , 1, 0, "debugger support")
    143 BENIGN_LANGOPT(DebuggerCastResultToId, 1, 0, "for 'po' in the debugger, cast the result to id if it is of unknown type")
    144 BENIGN_LANGOPT(DebuggerObjCLiteral , 1, 0, "debugger Objective-C literals and subscripting support")
    145 
    146 BENIGN_LANGOPT(SpellChecking , 1, 1, "spell-checking")
    147 LANGOPT(SinglePrecisionConstants , 1, 0, "treating double-precision floating point constants as single precision constants")
    148 LANGOPT(FastRelaxedMath , 1, 0, "OpenCL fast relaxed math")
    149 LANGOPT(DefaultFPContract , 1, 0, "FP_CONTRACT")
    150 LANGOPT(NoBitFieldTypeAlign , 1, 0, "bit-field type alignment")
    151 LANGOPT(HexagonQdsp6Compat , 1, 0, "hexagon-qdsp6 backward compatibility")
    152 LANGOPT(ObjCAutoRefCount , 1, 0, "Objective-C automated reference counting")
    153 LANGOPT(ObjCARCWeak         , 1, 0, "__weak support in the ARC runtime")
    154 LANGOPT(ObjCSubscriptingLegacyRuntime         , 1, 0, "Subscripting support in legacy ObjectiveC runtime")
    155 LANGOPT(FakeAddressSpaceMap , 1, 0, "OpenCL fake address space map")
    156 ENUM_LANGOPT(AddressSpaceMapMangling , AddrSpaceMapMangling, 2, ASMM_Target, "OpenCL address space map mangling mode")
    157 
    158 LANGOPT(MRTD , 1, 0, "-mrtd calling convention")
    159 BENIGN_LANGOPT(DelayedTemplateParsing , 1, 0, "delayed template parsing")
    160 LANGOPT(BlocksRuntimeOptional , 1, 0, "optional blocks runtime")
    161 
    162 ENUM_LANGOPT(GC, GCMode, 2, NonGC, "Objective-C Garbage Collection mode")
    163 ENUM_LANGOPT(ValueVisibilityMode, Visibility, 3, DefaultVisibility,
    164              "value symbol visibility")
    165 ENUM_LANGOPT(TypeVisibilityMode, Visibility, 3, DefaultVisibility,
    166              "type symbol visibility")
    167 ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,
    168              "stack protector mode")
    169 ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, SOB_Undefined,
    170              "signed integer overflow handling")
    171 
    172 BENIGN_LANGOPT(ArrowDepth, 32, 256,
    173                "maximum number of operator->s to follow")
    174 BENIGN_LANGOPT(InstantiationDepth, 32, 256,
    175                "maximum template instantiation depth")
    176 BENIGN_LANGOPT(ConstexprCallDepth, 32, 512,
    177                "maximum constexpr call depth")
    178 BENIGN_LANGOPT(ConstexprStepLimit, 32, 1048576,
    179                "maximum constexpr evaluation steps")
    180 BENIGN_LANGOPT(BracketDepth, 32, 256,
    181                "maximum bracket nesting depth")
    182 BENIGN_LANGOPT(NumLargeByValueCopy, 32, 0,
    183         "if non-zero, warn about parameter or return Warn if parameter/return value is larger in bytes than this setting. 0 is no check.")
    184 VALUE_LANGOPT(MSCVersion, 32, 0,
    185               "version of Microsoft Visual C/C++")
    186 VALUE_LANGOPT(VtorDispMode, 2, 1, "How many vtordisps to insert")
    187 
    188 LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling")
    189 
    190 LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST")
    191 
    192 #undef LANGOPT
    193 #undef VALUE_LANGOPT
    194 #undef BENIGN_LANGOPT
    195 #undef ENUM_LANGOPT
    196 #undef BENIGN_ENUM_LANGOPT
    197 
    198