Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===--- LangOptions.def - Language option database -------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file defines the language options. Users of this file must
10
// define the LANGOPT macro to make use of this information. The arguments to
11
// the macro are:
12
//   LANGOPT(Name, Bits, DefaultValue, Description)
13
// Note that the DefaultValue must be a constant value (literal or enumeration);
14
// it cannot depend on the value of another language option.
15
//
16
// Optionally, the user may also define:
17
//
18
// BENIGN_LANGOPT: for options that don't affect the construction of the AST in
19
//     any way (that is, the value can be different between an implicit module
20
//     and the user of that module).
21
//
22
// COMPATIBLE_LANGOPT: for options that affect the construction of the AST in
23
//     a way that doesn't prevent interoperability (that is, the value can be
24
//     different between an explicit module and the user of that module).
25
//
26
// ENUM_LANGOPT: for options that have enumeration, rather than unsigned, type.
27
//
28
// VALUE_LANGOPT: for options that describe a value rather than a flag.
29
//
30
// BENIGN_ENUM_LANGOPT, COMPATIBLE_ENUM_LANGOPT,
31
// BENIGN_VALUE_LANGOPT, COMPATIBLE_VALUE_LANGOPT: combinations of the above.
32
//
33
// FIXME: Clients should be able to more easily select whether they want
34
// different levels of compatibility versus how to handle different kinds
35
// of option.
36
//
37
// The Description field should be a noun phrase, for instance "frobbing all
38
// widgets" or "C's implicit blintz feature".
39
//===----------------------------------------------------------------------===//
40
 
41
#ifndef LANGOPT
42
#  error Define the LANGOPT macro to handle language options
43
#endif
44
 
45
#ifndef COMPATIBLE_LANGOPT
46
#  define COMPATIBLE_LANGOPT(Name, Bits, Default, Description) \
47
     LANGOPT(Name, Bits, Default, Description)
48
#endif
49
 
50
#ifndef BENIGN_LANGOPT
51
#  define BENIGN_LANGOPT(Name, Bits, Default, Description) \
52
     COMPATIBLE_LANGOPT(Name, Bits, Default, Description)
53
#endif
54
 
55
#ifndef ENUM_LANGOPT
56
#  define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
57
     LANGOPT(Name, Bits, Default, Description)
58
#endif
59
 
60
#ifndef COMPATIBLE_ENUM_LANGOPT
61
#  define COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
62
     ENUM_LANGOPT(Name, Type, Bits, Default, Description)
63
#endif
64
 
65
#ifndef BENIGN_ENUM_LANGOPT
66
#  define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
67
     COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
68
#endif
69
 
70
#ifndef VALUE_LANGOPT
71
#  define VALUE_LANGOPT(Name, Bits, Default, Description) \
72
     LANGOPT(Name, Bits, Default, Description)
73
#endif
74
 
75
#ifndef COMPATIBLE_VALUE_LANGOPT
76
#  define COMPATIBLE_VALUE_LANGOPT(Name, Bits, Default, Description) \
77
     VALUE_LANGOPT(Name, Bits, Default, Description)
78
#endif
79
 
80
#ifndef BENIGN_VALUE_LANGOPT
81
#  define BENIGN_VALUE_LANGOPT(Name, Bits, Default, Description) \
82
     COMPATIBLE_VALUE_LANGOPT(Name, Bits, Default, Description)
83
#endif
84
 
85
// FIXME: A lot of the BENIGN_ options should be COMPATIBLE_ instead.
86
LANGOPT(C99               , 1, 0, "C99")
87
LANGOPT(C11               , 1, 0, "C11")
88
LANGOPT(C17               , 1, 0, "C17")
89
LANGOPT(C2x               , 1, 0, "C2x")
90
LANGOPT(MSVCCompat        , 1, 0, "Microsoft Visual C++ full compatibility mode")
91
LANGOPT(Kernel            , 1, 0, "Kernel mode")
92
LANGOPT(MicrosoftExt      , 1, 0, "Microsoft C++ extensions")
93
LANGOPT(AsmBlocks         , 1, 0, "Microsoft inline asm blocks")
94
LANGOPT(Borland           , 1, 0, "Borland extensions")
95
LANGOPT(CPlusPlus         , 1, 0, "C++")
96
LANGOPT(CPlusPlus11       , 1, 0, "C++11")
97
LANGOPT(CPlusPlus14       , 1, 0, "C++14")
98
LANGOPT(CPlusPlus17       , 1, 0, "C++17")
99
LANGOPT(CPlusPlus20       , 1, 0, "C++20")
100
LANGOPT(CPlusPlus2b       , 1, 0, "C++2b")
101
LANGOPT(ObjC              , 1, 0, "Objective-C")
102
BENIGN_LANGOPT(ObjCDefaultSynthProperties , 1, 0,
103
               "Objective-C auto-synthesized properties")
104
BENIGN_LANGOPT(EncodeExtendedBlockSig , 1, 0,
105
               "Encoding extended block type signature")
106
BENIGN_LANGOPT(EncodeCXXClassTemplateSpec , 1, 0,
107
               "Fully encode c++ class template specialization")
108
BENIGN_LANGOPT(ObjCInferRelatedResultType , 1, 1,
109
               "Objective-C related result type inference")
110
LANGOPT(AppExt , 1, 0, "Objective-C App Extension")
111
LANGOPT(Trigraphs         , 1, 0,"trigraphs")
112
LANGOPT(LineComment       , 1, 0, "'//' comments")
113
LANGOPT(Bool              , 1, 0, "bool, true, and false keywords")
114
LANGOPT(Half              , 1, 0, "half keyword")
115
LANGOPT(WChar             , 1, 0, "wchar_t keyword")
116
LANGOPT(Char8             , 1, 0, "char8_t keyword")
117
LANGOPT(IEEE128           , 1, 0, "__ieee128 keyword")
118
LANGOPT(DeclSpecKeyword   , 1, 0, "__declspec keyword")
119
BENIGN_LANGOPT(DollarIdents   , 1, 1, "'$' in identifiers")
120
BENIGN_LANGOPT(AsmPreprocessor, 1, 0, "preprocessor in asm mode")
121
LANGOPT(GNUMode           , 1, 1, "GNU extensions")
122
LANGOPT(GNUKeywords       , 1, 1, "GNU keywords")
123
VALUE_LANGOPT(GNUCVersion , 32, 0, "GNU C compatibility version")
124
LANGOPT(DisableKNRFunctions, 1, 0, "require function types to have a prototype")
125
LANGOPT(Digraphs          , 1, 0, "digraphs")
126
BENIGN_LANGOPT(HexFloats  , 1, 0, "C99 hexadecimal float constants")
127
LANGOPT(CXXOperatorNames  , 1, 0, "C++ operator name keywords")
128
LANGOPT(AppleKext         , 1, 0, "Apple kext support")
129
BENIGN_LANGOPT(PascalStrings, 1, 0, "Pascal string support")
130
LANGOPT(WritableStrings   , 1, 0, "writable string support")
131
LANGOPT(ConstStrings      , 1, 0, "const-qualified string support")
132
ENUM_LANGOPT(LaxVectorConversions, LaxVectorConversionKind, 2,
133
             LaxVectorConversionKind::All, "lax vector conversions")
134
ENUM_LANGOPT(AltivecSrcCompat, AltivecSrcCompatKind, 2,
135
             AltivecSrcCompatKind::Default, "Altivec source compatibility")
136
LANGOPT(ConvergentFunctions, 1, 1, "Assume convergent functions")
137
LANGOPT(AltiVec           , 1, 0, "AltiVec-style vector initializers")
138
LANGOPT(ZVector           , 1, 0, "System z vector extensions")
139
LANGOPT(Exceptions        , 1, 0, "exception handling")
140
LANGOPT(ObjCExceptions    , 1, 0, "Objective-C exceptions")
141
LANGOPT(CXXExceptions     , 1, 0, "C++ exceptions")
142
LANGOPT(EHAsynch          , 1, 0, "C/C++ EH Asynch exceptions")
143
ENUM_LANGOPT(ExceptionHandling, ExceptionHandlingKind, 3,
144
             ExceptionHandlingKind::None, "exception handling")
145
LANGOPT(IgnoreExceptions  , 1, 0, "ignore exceptions")
146
LANGOPT(ExternCNoUnwind   , 1, 0, "Assume extern C functions don't unwind")
147
LANGOPT(TraditionalCPP    , 1, 0, "traditional CPP emulation")
148
LANGOPT(RTTI              , 1, 1, "run-time type information")
149
LANGOPT(RTTIData          , 1, 1, "emit run-time type information data")
150
LANGOPT(MSBitfields       , 1, 0, "Microsoft-compatible structure layout")
151
LANGOPT(MSVolatile        , 1, 0, "Microsoft-compatible volatile loads and stores")
152
LANGOPT(Freestanding, 1, 0, "freestanding implementation")
153
LANGOPT(NoBuiltin         , 1, 0, "disable builtin functions")
154
LANGOPT(NoMathBuiltin     , 1, 0, "disable math builtin functions")
155
LANGOPT(GNUAsm            , 1, 1, "GNU-style inline assembly")
156
LANGOPT(Coroutines        , 1, 0, "C++20 coroutines")
157
LANGOPT(CoroAlignedAllocation, 1, 0, "prefer Aligned Allocation according to P2014 Option 2")
158
LANGOPT(DllExportInlines  , 1, 1, "dllexported classes dllexport inline methods")
159
LANGOPT(RelaxedTemplateTemplateArgs, 1, 0, "C++17 relaxed matching of template template arguments")
160
LANGOPT(ExperimentalLibrary, 1, 0, "enable unstable and experimental library features")
161
 
162
LANGOPT(DoubleSquareBracketAttributes, 1, 0, "'[[]]' attributes extension for all language standard modes")
163
 
164
COMPATIBLE_LANGOPT(RecoveryAST, 1, 1, "Preserve expressions in AST when encountering errors")
165
COMPATIBLE_LANGOPT(RecoveryASTType, 1, 1, "Preserve the type in recovery expressions")
166
 
167
BENIGN_LANGOPT(ThreadsafeStatics , 1, 1, "thread-safe static initializers")
168
LANGOPT(POSIXThreads      , 1, 0, "POSIX thread support")
169
LANGOPT(Blocks            , 1, 0, "blocks extension to C")
170
BENIGN_LANGOPT(EmitAllDecls      , 1, 0, "emitting all declarations")
171
LANGOPT(MathErrno         , 1, 1, "errno in math functions")
172
BENIGN_LANGOPT(HeinousExtensions , 1, 0, "extensions that we really don't like and may be ripped out at any time")
173
LANGOPT(Modules           , 1, 0, "modules semantics")
174
COMPATIBLE_LANGOPT(ModulesTS  , 1, 0, "C++ Modules TS syntax")
175
COMPATIBLE_LANGOPT(CPlusPlusModules, 1, 0, "C++ modules syntax")
176
BENIGN_ENUM_LANGOPT(CompilingModule, CompilingModuleKind, 3, CMK_None,
177
                    "compiling a module interface")
178
BENIGN_LANGOPT(CompilingPCH, 1, 0, "building a pch")
179
BENIGN_LANGOPT(BuildingPCHWithObjectFile, 1, 0, "building a pch which has a corresponding object file")
180
BENIGN_LANGOPT(CacheGeneratedPCH, 1, 0, "cache generated PCH files in memory")
181
BENIGN_LANGOPT(PCHInstantiateTemplates, 1, 0, "instantiate templates while building a PCH")
182
COMPATIBLE_LANGOPT(ModulesDeclUse    , 1, 0, "require declaration of module uses")
183
BENIGN_LANGOPT(ModulesSearchAll  , 1, 1, "searching even non-imported modules to find unresolved references")
184
COMPATIBLE_LANGOPT(ModulesStrictDeclUse, 1, 0, "requiring declaration of module uses and all headers to be in modules")
185
COMPATIBLE_LANGOPT(ModulesValidateTextualHeaderIncludes, 1, 1, "validation of textual header includes")
186
BENIGN_LANGOPT(ModulesErrorRecovery, 1, 1, "automatically importing modules as needed when performing error recovery")
187
BENIGN_LANGOPT(ImplicitModules, 1, 1, "building modules that are not specified via -fmodule-file")
188
COMPATIBLE_LANGOPT(ModulesLocalVisibility, 1, 0, "local submodule visibility")
189
COMPATIBLE_LANGOPT(Optimize          , 1, 0, "__OPTIMIZE__ predefined macro")
190
COMPATIBLE_LANGOPT(OptimizeSize      , 1, 0, "__OPTIMIZE_SIZE__ predefined macro")
191
COMPATIBLE_LANGOPT(Static            , 1, 0, "__STATIC__ predefined macro (as opposed to __DYNAMIC__)")
192
VALUE_LANGOPT(PackStruct  , 32, 0,
193
              "default struct packing maximum alignment")
194
VALUE_LANGOPT(MaxTypeAlign  , 32, 0,
195
              "default maximum alignment for types")
196
VALUE_LANGOPT(AlignDouble            , 1, 0, "Controls if doubles should be aligned to 8 bytes (x86 only)")
197
VALUE_LANGOPT(DoubleSize            , 32, 0, "width of double")
198
VALUE_LANGOPT(LongDoubleSize        , 32, 0, "width of long double")
199
LANGOPT(PPCIEEELongDouble            , 1, 0, "use IEEE 754 quadruple-precision for long double")
200
LANGOPT(EnableAIXExtendedAltivecABI  , 1, 0, "__EXTABI__  predefined macro")
201
LANGOPT(EnableAIXQuadwordAtomicsABI  , 1, 0, "Use 16-byte atomic lock free semantics")
202
COMPATIBLE_VALUE_LANGOPT(PICLevel    , 2, 0, "__PIC__ level")
203
COMPATIBLE_VALUE_LANGOPT(PIE         , 1, 0, "is pie")
204
LANGOPT(ROPI                         , 1, 0, "Read-only position independence")
205
LANGOPT(RWPI                         , 1, 0, "Read-write position independence")
206
COMPATIBLE_LANGOPT(GNUInline         , 1, 0, "GNU inline semantics")
207
COMPATIBLE_LANGOPT(NoInlineDefine    , 1, 0, "__NO_INLINE__ predefined macro")
208
COMPATIBLE_LANGOPT(Deprecated        , 1, 0, "__DEPRECATED predefined macro")
209
COMPATIBLE_LANGOPT(FastMath          , 1, 0, "fast FP math optimizations, and __FAST_MATH__ predefined macro")
210
COMPATIBLE_LANGOPT(FiniteMathOnly    , 1, 0, "__FINITE_MATH_ONLY__ predefined macro")
211
COMPATIBLE_LANGOPT(UnsafeFPMath      , 1, 0, "Unsafe Floating Point Math")
212
COMPATIBLE_LANGOPT(ProtectParens     , 1, 0, "optimizer honors parentheses "
213
                   "when floating-point expressions are evaluated")
214
BENIGN_LANGOPT(AllowFPReassoc    , 1, 0, "Permit Floating Point reassociation")
215
BENIGN_LANGOPT(NoHonorNaNs       , 1, 0, "Permit Floating Point optimization without regard to NaN")
216
BENIGN_LANGOPT(NoHonorInfs       , 1, 0, "Permit Floating Point optimization without regard to infinities")
217
BENIGN_LANGOPT(NoSignedZero      , 1, 0, "Permit Floating Point optimization without regard to signed zeros")
218
BENIGN_LANGOPT(AllowRecip        , 1, 0, "Permit Floating Point reciprocal")
219
BENIGN_LANGOPT(ApproxFunc        , 1, 0, "Permit Floating Point approximation")
220
 
221
BENIGN_LANGOPT(ObjCGCBitmapPrint , 1, 0, "printing of GC's bitmap layout for __weak/__strong ivars")
222
 
223
BENIGN_LANGOPT(AccessControl     , 1, 1, "C++ access control")
224
LANGOPT(CharIsSigned      , 1, 1, "signed char")
225
LANGOPT(WCharSize         , 4, 0, "width of wchar_t")
226
LANGOPT(WCharIsSigned        , 1, 0, "signed or unsigned wchar_t")
227
ENUM_LANGOPT(MSPointerToMemberRepresentationMethod, PragmaMSPointersToMembersKind, 2, PPTMK_BestCase, "member-pointer representation method")
228
ENUM_LANGOPT(DefaultCallingConv, DefaultCallingConvention, 3, DCC_None, "default calling convention")
229
 
230
LANGOPT(ShortEnums        , 1, 0, "short enum types")
231
 
232
LANGOPT(OpenCL            , 1, 0, "OpenCL")
233
LANGOPT(OpenCLVersion     , 32, 0, "OpenCL C version")
234
LANGOPT(OpenCLCPlusPlus   , 1, 0, "C++ for OpenCL")
235
LANGOPT(OpenCLCPlusPlusVersion     , 32, 0, "C++ for OpenCL version")
236
LANGOPT(OpenCLGenericAddressSpace, 1, 0, "OpenCL generic keyword")
237
LANGOPT(OpenCLPipes              , 1, 0, "OpenCL pipes language constructs and built-ins")
238
LANGOPT(NativeHalfType    , 1, 0, "Native half type support")
239
LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns")
240
LANGOPT(CUDA              , 1, 0, "CUDA")
241
LANGOPT(HIP               , 1, 0, "HIP")
242
LANGOPT(OpenMP            , 32, 0, "OpenMP support and version of OpenMP (31, 40 or 45)")
243
LANGOPT(OpenMPExtensions  , 1, 1, "Enable all Clang extensions for OpenMP directives and clauses")
244
LANGOPT(OpenMPSimd        , 1, 0, "Use SIMD only OpenMP support.")
245
LANGOPT(OpenMPUseTLS      , 1, 0, "Use TLS for threadprivates or runtime calls")
246
LANGOPT(OpenMPIsDevice    , 1, 0, "Generate code only for OpenMP target device")
247
LANGOPT(OpenMPCUDAMode    , 1, 0, "Generate code for OpenMP pragmas in SIMT/SPMD mode")
248
LANGOPT(OpenMPIRBuilder   , 1, 0, "Use the experimental OpenMP-IR-Builder codegen path.")
249
LANGOPT(OpenMPCUDANumSMs  , 32, 0, "Number of SMs for CUDA devices.")
250
LANGOPT(OpenMPCUDABlocksPerSM  , 32, 0, "Number of blocks per SM for CUDA devices.")
251
LANGOPT(OpenMPCUDAReductionBufNum , 32, 1024, "Number of the reduction records in the intermediate reduction buffer used for the teams reductions.")
252
LANGOPT(OpenMPTargetDebug , 32, 0, "Enable debugging in the OpenMP offloading device RTL")
253
LANGOPT(OpenMPOptimisticCollapse  , 1, 0, "Use at most 32 bits to represent the collapsed loop nest counter.")
254
LANGOPT(OpenMPThreadSubscription  , 1, 0, "Assume work-shared loops do not have more iterations than participating threads.")
255
LANGOPT(OpenMPTeamSubscription  , 1, 0, "Assume distributed loops do not have more iterations than participating teams.")
256
LANGOPT(OpenMPNoThreadState  , 1, 0, "Assume that no thread in a parallel region will modify an ICV.")
257
LANGOPT(OpenMPNoNestedParallelism  , 1, 0, "Assume that no thread in a parallel region will encounter a parallel region")
258
LANGOPT(OpenMPOffloadMandatory  , 1, 0, "Assert that offloading is mandatory and do not create a host fallback.")
259
LANGOPT(NoGPULib  , 1, 0, "Indicate a build without the standard GPU libraries.")
260
LANGOPT(RenderScript      , 1, 0, "RenderScript")
261
 
262
LANGOPT(HLSL, 1, 0, "HLSL")
263
ENUM_LANGOPT(HLSLVersion, HLSLLangStd, 16, HLSL_Unset, "HLSL Version")
264
 
265
LANGOPT(CUDAIsDevice      , 1, 0, "compiling for CUDA device")
266
LANGOPT(CUDAAllowVariadicFunctions, 1, 0, "allowing variadic functions in CUDA device code")
267
LANGOPT(CUDAHostDeviceConstexpr, 1, 1, "treating unattributed constexpr functions as __host__ __device__")
268
LANGOPT(CUDADeviceApproxTranscendentals, 1, 0, "using approximate transcendental functions")
269
LANGOPT(GPURelocatableDeviceCode, 1, 0, "generate relocatable device code")
270
LANGOPT(GPUAllowDeviceInit, 1, 0, "allowing device side global init functions for HIP")
271
LANGOPT(GPUMaxThreadsPerBlock, 32, 1024, "default max threads per block for kernel launch bounds for HIP")
272
LANGOPT(GPUDeferDiag, 1, 0, "defer host/device related diagnostic messages for CUDA/HIP")
273
LANGOPT(GPUExcludeWrongSideOverloads, 1, 0, "always exclude wrong side overloads in overloading resolution for CUDA/HIP")
274
LANGOPT(OffloadingNewDriver, 1, 0, "use the new driver for generating offloading code.")
275
 
276
LANGOPT(SYCLIsDevice      , 1, 0, "Generate code for SYCL device")
277
LANGOPT(SYCLIsHost        , 1, 0, "SYCL host compilation")
278
ENUM_LANGOPT(SYCLVersion  , SYCLMajorVersion, 2, SYCL_None, "Version of the SYCL standard used")
279
 
280
LANGOPT(HIPUseNewLaunchAPI, 1, 0, "Use new kernel launching API for HIP")
281
 
282
LANGOPT(SizedDeallocation , 1, 0, "sized deallocation")
283
LANGOPT(AlignedAllocation , 1, 0, "aligned allocation")
284
LANGOPT(AlignedAllocationUnavailable, 1, 0, "aligned allocation functions are unavailable")
285
LANGOPT(NewAlignOverride  , 32, 0, "maximum alignment guaranteed by '::operator new(size_t)'")
286
BENIGN_LANGOPT(ModulesCodegen , 1, 0, "Modules code generation")
287
BENIGN_LANGOPT(ModulesDebugInfo , 1, 0, "Modules debug info")
288
BENIGN_LANGOPT(ElideConstructors , 1, 1, "C++ copy constructor elision")
289
BENIGN_LANGOPT(DumpRecordLayouts , 1, 0, "dumping the layout of IRgen'd records")
290
BENIGN_LANGOPT(DumpRecordLayoutsSimple , 1, 0, "dumping the layout of IRgen'd records in a simple form")
291
BENIGN_LANGOPT(DumpRecordLayoutsCanonical , 1, 0, "dumping the AST layout of records using canonical field types")
292
BENIGN_LANGOPT(DumpRecordLayoutsComplete , 1, 0, "dumping the AST layout of all complete records")
293
BENIGN_LANGOPT(DumpVTableLayouts , 1, 0, "dumping the layouts of emitted vtables")
294
LANGOPT(NoConstantCFStrings , 1, 0, "no constant CoreFoundation strings")
295
BENIGN_LANGOPT(InlineVisibilityHidden , 1, 0, "hidden visibility for inline C++ methods")
296
BENIGN_ENUM_LANGOPT(DefaultVisibilityExportMapping, DefaultVisiblityExportMapping, 2, DefaultVisiblityExportMapping::None, "controls mapping of default visibility to dllexport")
297
BENIGN_LANGOPT(IgnoreXCOFFVisibility, 1, 0, "All the visibility attributes that are specified in the source code are ignored in aix XCOFF.")
298
BENIGN_LANGOPT(VisibilityInlinesHiddenStaticLocalVar, 1, 0,
299
               "hidden visibility for static local variables in inline C++ "
300
               "methods when -fvisibility-inlines hidden is enabled")
301
LANGOPT(GlobalAllocationFunctionVisibilityHidden , 1, 0, "hidden visibility for global operator new and delete declaration")
302
LANGOPT(NewInfallible , 1, 0, "Treats throwing global C++ operator new as always returning valid memory (annotates with __attribute__((returns_nonnull)) and throw()). This is detectable in source.")
303
BENIGN_LANGOPT(ParseUnknownAnytype, 1, 0, "__unknown_anytype")
304
BENIGN_LANGOPT(DebuggerSupport , 1, 0, "debugger support")
305
BENIGN_LANGOPT(DebuggerCastResultToId, 1, 0, "for 'po' in the debugger, cast the result to id if it is of unknown type")
306
BENIGN_LANGOPT(DebuggerObjCLiteral , 1, 0, "debugger Objective-C literals and subscripting support")
307
 
308
BENIGN_LANGOPT(SpellChecking , 1, 1, "spell-checking")
309
LANGOPT(SinglePrecisionConstants , 1, 0, "treating double-precision floating point constants as single precision constants")
310
LANGOPT(FastRelaxedMath , 1, 0, "OpenCL fast relaxed math")
311
BENIGN_LANGOPT(CLNoSignedZero , 1, 0, "Permit Floating Point optimization without regard to signed zeros")
312
COMPATIBLE_LANGOPT(CLUnsafeMath , 1, 0, "Unsafe Floating Point Math")
313
COMPATIBLE_LANGOPT(CLFiniteMathOnly , 1, 0, "__FINITE_MATH_ONLY__ predefined macro")
314
/// FP_CONTRACT mode (on/off/fast).
315
BENIGN_ENUM_LANGOPT(DefaultFPContractMode, FPModeKind, 2, FPM_Off, "FP contraction type")
316
COMPATIBLE_LANGOPT(ExpStrictFP, 1, false, "Enable experimental strict floating point")
317
BENIGN_LANGOPT(RoundingMath, 1, false, "Do not assume default floating-point rounding behavior")
318
BENIGN_ENUM_LANGOPT(FPExceptionMode, FPExceptionModeKind, 2, FPE_Default, "FP Exception Behavior Mode type")
319
BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 2, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
320
ENUM_LANGOPT(Float16ExcessPrecision, ExcessPrecisionKind, 2, FPP_Standard, "Intermediate truncation behavior for floating point arithmetic")
321
LANGOPT(NoBitFieldTypeAlign , 1, 0, "bit-field type alignment")
322
LANGOPT(HexagonQdsp6Compat , 1, 0, "hexagon-qdsp6 backward compatibility")
323
LANGOPT(ObjCAutoRefCount , 1, 0, "Objective-C automated reference counting")
324
LANGOPT(ObjCWeakRuntime     , 1, 0, "__weak support in the ARC runtime")
325
LANGOPT(ObjCWeak            , 1, 0, "Objective-C __weak in ARC and MRC files")
326
LANGOPT(ObjCSubscriptingLegacyRuntime         , 1, 0, "Subscripting support in legacy ObjectiveC runtime")
327
BENIGN_LANGOPT(CompatibilityQualifiedIdBlockParamTypeChecking, 1, 0,
328
               "compatibility mode for type checking block parameters "
329
               "involving qualified id types")
330
LANGOPT(ObjCDisableDirectMethodsForTesting, 1, 0,
331
        "Disable recognition of objc_direct methods")
332
LANGOPT(CFProtectionBranch , 1, 0, "Control-Flow Branch Protection enabled")
333
LANGOPT(FakeAddressSpaceMap , 1, 0, "OpenCL fake address space map")
334
ENUM_LANGOPT(AddressSpaceMapMangling , AddrSpaceMapMangling, 2, ASMM_Target, "OpenCL address space map mangling mode")
335
LANGOPT(IncludeDefaultHeader, 1, 0, "Include default header file for OpenCL")
336
LANGOPT(DeclareOpenCLBuiltins, 1, 0, "Declare OpenCL builtin functions")
337
BENIGN_LANGOPT(DelayedTemplateParsing , 1, 0, "delayed template parsing")
338
LANGOPT(BlocksRuntimeOptional , 1, 0, "optional blocks runtime")
339
LANGOPT(
340
    CompleteMemberPointers, 1, 0,
341
    "Require member pointer base types to be complete at the point where the "
342
    "type's inheritance model would be determined under the Microsoft ABI")
343
 
344
ENUM_LANGOPT(GC, GCMode, 2, NonGC, "Objective-C Garbage Collection mode")
345
ENUM_LANGOPT(ValueVisibilityMode, Visibility, 3, DefaultVisibility,
346
             "default visibility for functions and variables [-fvisibility]")
347
ENUM_LANGOPT(TypeVisibilityMode, Visibility, 3, DefaultVisibility,
348
             "default visibility for types [-ftype-visibility]")
349
LANGOPT(SetVisibilityForExternDecls, 1, 0,
350
        "apply global symbol visibility to external declarations without an explicit visibility")
351
LANGOPT(VisibilityFromDLLStorageClass, 1, 0,
352
        "set the visiblity of globals from their DLL storage class [-fvisibility-from-dllstorageclass]")
353
ENUM_LANGOPT(DLLExportVisibility, Visibility, 3, DefaultVisibility,
354
             "visibility for functions and variables with dllexport annotations [-fvisibility-from-dllstorageclass]")
355
ENUM_LANGOPT(NoDLLStorageClassVisibility, Visibility, 3, HiddenVisibility,
356
             "visibility for functions and variables without an explicit DLL storage class [-fvisibility-from-dllstorageclass]")
357
ENUM_LANGOPT(ExternDeclDLLImportVisibility, Visibility, 3, DefaultVisibility,
358
             "visibility for external declarations with dllimport annotations [-fvisibility-from-dllstorageclass]")
359
ENUM_LANGOPT(ExternDeclNoDLLStorageClassVisibility, Visibility, 3, HiddenVisibility,
360
             "visibility for external declarations without an explicit DLL storage class [-fvisibility-from-dllstorageclass]")
361
BENIGN_LANGOPT(SemanticInterposition        , 1, 0, "semantic interposition")
362
BENIGN_LANGOPT(HalfNoSemanticInterposition, 1, 0,
363
               "Like -fno-semantic-interposition but don't use local aliases")
364
ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,
365
             "stack protector mode")
366
ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, TrivialAutoVarInitKind::Uninitialized,
367
             "trivial automatic variable initialization")
368
VALUE_LANGOPT(TrivialAutoVarInitStopAfter, 32, 0,
369
             "stop trivial automatic variable initialization after the specified number of instances. Must be greater than 0.")
370
ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, SOB_Undefined,
371
             "signed integer overflow handling")
372
ENUM_LANGOPT(ThreadModel  , ThreadModelKind, 2, ThreadModelKind::POSIX, "Thread Model")
373
 
374
BENIGN_LANGOPT(ArrowDepth, 32, 256,
375
               "maximum number of operator->s to follow")
376
BENIGN_LANGOPT(InstantiationDepth, 32, 1024,
377
               "maximum template instantiation depth")
378
BENIGN_LANGOPT(ConstexprCallDepth, 32, 512,
379
               "maximum constexpr call depth")
380
BENIGN_LANGOPT(ConstexprStepLimit, 32, 1048576,
381
               "maximum constexpr evaluation steps")
382
BENIGN_LANGOPT(EnableNewConstInterp, 1, 0,
383
               "enable the experimental new constant interpreter")
384
BENIGN_LANGOPT(BracketDepth, 32, 256,
385
               "maximum bracket nesting depth")
386
BENIGN_LANGOPT(NumLargeByValueCopy, 32, 0,
387
        "if non-zero, warn about parameter or return Warn if parameter/return value is larger in bytes than this setting. 0 is no check.")
388
VALUE_LANGOPT(MSCompatibilityVersion, 32, 0, "Microsoft Visual C/C++ Version")
389
ENUM_LANGOPT(VtorDispMode, MSVtorDispMode, 2, MSVtorDispMode::ForVBaseOverride,
390
             "How many vtordisps to insert")
391
 
392
LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling")
393
 
394
LANGOPT(XLPragmaPack, 1, 0, "IBM XL #pragma pack handling")
395
 
396
LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST")
397
 
398
LANGOPT(SanitizeAddressFieldPadding, 2, 0, "controls how aggressive is ASan "
399
                                           "field padding (0: none, 1:least "
400
                                           "aggressive, 2: more aggressive)")
401
 
402
LANGOPT(Cmse, 1, 0, "ARM Security extensions support")
403
 
404
LANGOPT(XRayInstrument, 1, 0, "controls whether to do XRay instrumentation")
405
LANGOPT(XRayAlwaysEmitCustomEvents, 1, 0,
406
        "controls whether to always emit intrinsic calls to "
407
        "__xray_customevent(...) builtin.")
408
LANGOPT(XRayAlwaysEmitTypedEvents, 1, 0,
409
        "controls whether to always emit intrinsic calls to "
410
        "__xray_typedevent(...) builtin.")
411
 
412
LANGOPT(ForceEmitVTables, 1, 0, "whether to emit all vtables")
413
 
414
BENIGN_LANGOPT(AllowEditorPlaceholders, 1, 0,
415
               "allow editor placeholders in source")
416
 
417
ENUM_LANGOPT(ClangABICompat, ClangABI, 4, ClangABI::Latest,
418
             "version of Clang that we should attempt to be ABI-compatible "
419
             "with")
420
 
421
COMPATIBLE_VALUE_LANGOPT(FunctionAlignment, 5, 0, "Default alignment for functions")
422
COMPATIBLE_VALUE_LANGOPT(LoopAlignment, 32, 0, "Default alignment for loops")
423
 
424
LANGOPT(FixedPoint, 1, 0, "fixed point types")
425
LANGOPT(PaddingOnUnsignedFixedPoint, 1, 0,
426
        "unsigned fixed point types having one extra padding bit")
427
 
428
LANGOPT(RegisterStaticDestructors, 1, 1, "Register C++ static destructors")
429
 
430
LANGOPT(MatrixTypes, 1, 0, "Enable or disable the builtin matrix type")
431
 
432
ENUM_LANGOPT(StrictFlexArraysLevel, StrictFlexArraysLevelKind, 2,
433
             StrictFlexArraysLevelKind::Default,
434
             "Rely on strict definition of flexible arrays")
435
 
436
COMPATIBLE_VALUE_LANGOPT(MaxTokens, 32, 0, "Max number of tokens per TU or 0")
437
 
438
ENUM_LANGOPT(SignReturnAddressScope, SignReturnAddressScopeKind, 2, SignReturnAddressScopeKind::None,
439
             "Scope of return address signing")
440
ENUM_LANGOPT(SignReturnAddressKey, SignReturnAddressKeyKind, 1, SignReturnAddressKeyKind::AKey,
441
             "Key used for return address signing")
442
LANGOPT(BranchTargetEnforcement, 1, 0, "Branch-target enforcement enabled")
443
 
444
LANGOPT(SpeculativeLoadHardening, 1, 0, "Speculative load hardening enabled")
445
 
446
LANGOPT(RelativeCXXABIVTables, 1, 0,
447
        "Use an ABI-incompatible v-table layout that uses relative references")
448
 
449
LANGOPT(VScaleMin, 32, 0, "Minimum vscale value")
450
LANGOPT(VScaleMax, 32, 0, "Maximum vscale value")
451
 
452
ENUM_LANGOPT(ExtendIntArgs, ExtendArgsKind, 1, ExtendArgsKind::ExtendTo32,
453
             "Controls how scalar integer arguments are extended in calls "
454
             "to unprototyped and varargs functions")
455
 
456
VALUE_LANGOPT(FuchsiaAPILevel, 32, 0, "Fuchsia API level")
457
 
458
// This option will be removed in the future once the backend
459
// supports all operations (like division or float-to-integer conversion)
460
// on large _BitInts.
461
BENIGN_VALUE_LANGOPT(MaxBitIntWidth, 32, 128, "Maximum width of a _BitInt")
462
 
463
LANGOPT(IncrementalExtensions, 1, 0, " True if we want to process statements"
464
        "on the global scope, ignore EOF token and continue later on (thus "
465
        "avoid tearing the Lexer and etc. down). Controlled by "
466
        "-fincremental-extensions.")
467
 
468
#undef LANGOPT
469
#undef COMPATIBLE_LANGOPT
470
#undef BENIGN_LANGOPT
471
#undef ENUM_LANGOPT
472
#undef COMPATIBLE_ENUM_LANGOPT
473
#undef BENIGN_ENUM_LANGOPT
474
#undef VALUE_LANGOPT
475
#undef COMPATIBLE_VALUE_LANGOPT
476
#undef BENIGN_VALUE_LANGOPT