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