]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/include/clang/Basic/LangOptions.def
Merge ^/head r363739 through r363986.
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / include / clang / Basic / LangOptions.def
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.
11 //
12 // Optionally, the user may also define:
13 //
14 // BENIGN_LANGOPT: for options that don't affect the construction of the AST in
15 //     any way (that is, the value can be different between an implicit module
16 //     and the user of that module).
17 //
18 // COMPATIBLE_LANGOPT: for options that affect the construction of the AST in
19 //     a way that doesn't prevent interoperability (that is, the value can be
20 //     different between an explicit module and the user of that module).
21 //
22 // ENUM_LANGOPT: for options that have enumeration, rather than unsigned, type.
23 //
24 // VALUE_LANGOPT: for options that describe a value rather than a flag.
25 //
26 // BENIGN_ENUM_LANGOPT, COMPATIBLE_ENUM_LANGOPT,
27 // BENIGN_VALUE_LANGOPT, COMPATIBLE_VALUE_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 // The Description field should be a noun phrase, for instance "frobbing all
34 // widgets" or "C's implicit blintz feature".
35 //===----------------------------------------------------------------------===//
36
37 #ifndef LANGOPT
38 #  error Define the LANGOPT macro to handle language options
39 #endif
40
41 #ifndef COMPATIBLE_LANGOPT
42 #  define COMPATIBLE_LANGOPT(Name, Bits, Default, Description) \
43      LANGOPT(Name, Bits, Default, Description)
44 #endif
45
46 #ifndef BENIGN_LANGOPT
47 #  define BENIGN_LANGOPT(Name, Bits, Default, Description) \
48      COMPATIBLE_LANGOPT(Name, Bits, Default, Description)
49 #endif
50
51 #ifndef ENUM_LANGOPT
52 #  define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
53      LANGOPT(Name, Bits, Default, Description)
54 #endif
55
56 #ifndef COMPATIBLE_ENUM_LANGOPT
57 #  define COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
58      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
59 #endif
60
61 #ifndef BENIGN_ENUM_LANGOPT
62 #  define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
63      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
64 #endif
65
66 #ifndef VALUE_LANGOPT
67 #  define VALUE_LANGOPT(Name, Bits, Default, Description) \
68      LANGOPT(Name, Bits, Default, Description)
69 #endif
70
71 #ifndef COMPATIBLE_VALUE_LANGOPT
72 #  define COMPATIBLE_VALUE_LANGOPT(Name, Bits, Default, Description) \
73      VALUE_LANGOPT(Name, Bits, Default, Description)
74 #endif
75
76 #ifndef BENIGN_VALUE_LANGOPT
77 #  define BENIGN_VALUE_LANGOPT(Name, Bits, Default, Description) \
78      COMPATIBLE_VALUE_LANGOPT(Name, Bits, Default, Description)
79 #endif
80
81 // FIXME: A lot of the BENIGN_ options should be COMPATIBLE_ instead.
82 LANGOPT(C99               , 1, 0, "C99")
83 LANGOPT(C11               , 1, 0, "C11")
84 LANGOPT(C17               , 1, 0, "C17")
85 LANGOPT(C2x               , 1, 0, "C2x")
86 LANGOPT(MSVCCompat        , 1, 0, "Microsoft Visual C++ full compatibility mode")
87 LANGOPT(MicrosoftExt      , 1, 0, "Microsoft C++ extensions")
88 LANGOPT(AsmBlocks         , 1, 0, "Microsoft inline asm blocks")
89 LANGOPT(Borland           , 1, 0, "Borland extensions")
90 LANGOPT(CPlusPlus         , 1, 0, "C++")
91 LANGOPT(CPlusPlus11       , 1, 0, "C++11")
92 LANGOPT(CPlusPlus14       , 1, 0, "C++14")
93 LANGOPT(CPlusPlus17       , 1, 0, "C++17")
94 LANGOPT(CPlusPlus20       , 1, 0, "C++20")
95 LANGOPT(ObjC              , 1, 0, "Objective-C")
96 BENIGN_LANGOPT(ObjCDefaultSynthProperties , 1, 0,
97                "Objective-C auto-synthesized properties")
98 BENIGN_LANGOPT(EncodeExtendedBlockSig , 1, 0,
99                "Encoding extended block type signature")
100 BENIGN_LANGOPT(ObjCInferRelatedResultType , 1, 1,
101                "Objective-C related result type inference")
102 LANGOPT(AppExt , 1, 0, "Objective-C App Extension")
103 LANGOPT(Trigraphs         , 1, 0,"trigraphs")
104 LANGOPT(LineComment       , 1, 0, "'//' comments")
105 LANGOPT(Bool              , 1, 0, "bool, true, and false keywords")
106 LANGOPT(Half              , 1, 0, "half keyword")
107 LANGOPT(WChar             , 1, CPlusPlus, "wchar_t keyword")
108 LANGOPT(Char8             , 1, 0, "char8_t keyword")
109 LANGOPT(DeclSpecKeyword   , 1, 0, "__declspec keyword")
110 BENIGN_LANGOPT(DollarIdents   , 1, 1, "'$' in identifiers")
111 BENIGN_LANGOPT(AsmPreprocessor, 1, 0, "preprocessor in asm mode")
112 LANGOPT(GNUMode           , 1, 1, "GNU extensions")
113 LANGOPT(GNUKeywords       , 1, 1, "GNU keywords")
114 VALUE_LANGOPT(GNUCVersion , 32, 0, "GNU C compatibility version")
115 BENIGN_LANGOPT(ImplicitInt, 1, !C99 && !CPlusPlus, "C89 implicit 'int'")
116 LANGOPT(Digraphs          , 1, 0, "digraphs")
117 BENIGN_LANGOPT(HexFloats  , 1, C99, "C99 hexadecimal float constants")
118 LANGOPT(CXXOperatorNames  , 1, 0, "C++ operator name keywords")
119 LANGOPT(AppleKext         , 1, 0, "Apple kext support")
120 BENIGN_LANGOPT(PascalStrings, 1, 0, "Pascal string support")
121 LANGOPT(WritableStrings   , 1, 0, "writable string support")
122 LANGOPT(ConstStrings      , 1, 0, "const-qualified string support")
123 ENUM_LANGOPT(LaxVectorConversions, LaxVectorConversionKind, 2,
124              LaxVectorConversionKind::All, "lax vector conversions")
125 LANGOPT(ConvergentFunctions, 1, 1, "Assume convergent functions")
126 LANGOPT(AltiVec           , 1, 0, "AltiVec-style vector initializers")
127 LANGOPT(ZVector           , 1, 0, "System z vector extensions")
128 LANGOPT(Exceptions        , 1, 0, "exception handling")
129 LANGOPT(ObjCExceptions    , 1, 0, "Objective-C exceptions")
130 LANGOPT(CXXExceptions     , 1, 0, "C++ exceptions")
131 LANGOPT(DWARFExceptions   , 1, 0, "dwarf exception handling")
132 LANGOPT(SjLjExceptions    , 1, 0, "setjmp-longjump exception handling")
133 LANGOPT(SEHExceptions     , 1, 0, "SEH .xdata exception handling")
134 LANGOPT(WasmExceptions    , 1, 0, "WebAssembly exception handling")
135 LANGOPT(IgnoreExceptions  , 1, 0, "ignore exceptions")
136 LANGOPT(ExternCNoUnwind   , 1, 0, "Assume extern C functions don't unwind")
137 LANGOPT(TraditionalCPP    , 1, 0, "traditional CPP emulation")
138 LANGOPT(RTTI              , 1, 1, "run-time type information")
139 LANGOPT(RTTIData          , 1, 1, "emit run-time type information data")
140 LANGOPT(MSBitfields       , 1, 0, "Microsoft-compatible structure layout")
141 LANGOPT(Freestanding, 1, 0, "freestanding implementation")
142 LANGOPT(NoBuiltin         , 1, 0, "disable builtin functions")
143 LANGOPT(NoMathBuiltin     , 1, 0, "disable math builtin functions")
144 LANGOPT(GNUAsm            , 1, 1, "GNU-style inline assembly")
145 LANGOPT(Coroutines        , 1, 0, "C++20 coroutines")
146 LANGOPT(DllExportInlines  , 1, 1, "dllexported classes dllexport inline methods")
147 LANGOPT(RelaxedTemplateTemplateArgs, 1, 0, "C++17 relaxed matching of template template arguments")
148
149 LANGOPT(DoubleSquareBracketAttributes, 1, 0, "'[[]]' attributes extension for all language standard modes")
150
151 COMPATIBLE_LANGOPT(RecoveryAST, 1, 0, "Preserve expressions in AST when encountering errors")
152 COMPATIBLE_LANGOPT(RecoveryASTType, 1, 0, "Preserve the type in recovery expressions")
153
154 BENIGN_LANGOPT(ThreadsafeStatics , 1, 1, "thread-safe static initializers")
155 LANGOPT(POSIXThreads      , 1, 0, "POSIX thread support")
156 LANGOPT(Blocks            , 1, 0, "blocks extension to C")
157 BENIGN_LANGOPT(EmitAllDecls      , 1, 0, "emitting all declarations")
158 LANGOPT(MathErrno         , 1, 1, "errno in math functions")
159 BENIGN_LANGOPT(HeinousExtensions , 1, 0, "extensions that we really don't like and may be ripped out at any time")
160 LANGOPT(Modules           , 1, 0, "modules semantics")
161 COMPATIBLE_LANGOPT(ModulesTS  , 1, 0, "C++ Modules TS syntax")
162 COMPATIBLE_LANGOPT(CPlusPlusModules, 1, 0, "C++ modules syntax")
163 BENIGN_ENUM_LANGOPT(CompilingModule, CompilingModuleKind, 2, CMK_None,
164                     "compiling a module interface")
165 BENIGN_LANGOPT(CompilingPCH, 1, 0, "building a pch")
166 BENIGN_LANGOPT(BuildingPCHWithObjectFile, 1, 0, "building a pch which has a corresponding object file")
167 BENIGN_LANGOPT(CacheGeneratedPCH, 1, 0, "cache generated PCH files in memory")
168 BENIGN_LANGOPT(PCHInstantiateTemplates, 1, 0, "instantiate templates while building a PCH")
169 COMPATIBLE_LANGOPT(ModulesDeclUse    , 1, 0, "require declaration of module uses")
170 BENIGN_LANGOPT(ModulesSearchAll  , 1, 1, "searching even non-imported modules to find unresolved references")
171 COMPATIBLE_LANGOPT(ModulesStrictDeclUse, 1, 0, "requiring declaration of module uses and all headers to be in modules")
172 BENIGN_LANGOPT(ModulesErrorRecovery, 1, 1, "automatically importing modules as needed when performing error recovery")
173 BENIGN_LANGOPT(ImplicitModules, 1, 1, "building modules that are not specified via -fmodule-file")
174 COMPATIBLE_LANGOPT(ModulesLocalVisibility, 1, 0, "local submodule visibility")
175 COMPATIBLE_LANGOPT(Optimize          , 1, 0, "__OPTIMIZE__ predefined macro")
176 COMPATIBLE_LANGOPT(OptimizeSize      , 1, 0, "__OPTIMIZE_SIZE__ predefined macro")
177 COMPATIBLE_LANGOPT(Static            , 1, 0, "__STATIC__ predefined macro (as opposed to __DYNAMIC__)")
178 VALUE_LANGOPT(PackStruct  , 32, 0,
179               "default struct packing maximum alignment")
180 VALUE_LANGOPT(MaxTypeAlign  , 32, 0,
181               "default maximum alignment for types")
182 VALUE_LANGOPT(AlignDouble            , 1, 0, "Controls if doubles should be aligned to 8 bytes (x86 only)")
183 VALUE_LANGOPT(DoubleSize            , 32, 0, "width of double")
184 VALUE_LANGOPT(LongDoubleSize        , 32, 0, "width of long double")
185 LANGOPT(PPCIEEELongDouble            , 1, 0, "use IEEE 754 quadruple-precision for long double")
186 COMPATIBLE_VALUE_LANGOPT(PICLevel    , 2, 0, "__PIC__ level")
187 COMPATIBLE_VALUE_LANGOPT(PIE         , 1, 0, "is pie")
188 LANGOPT(ROPI                         , 1, 0, "Read-only position independence")
189 LANGOPT(RWPI                         , 1, 0, "Read-write position independence")
190 COMPATIBLE_LANGOPT(GNUInline         , 1, 0, "GNU inline semantics")
191 COMPATIBLE_LANGOPT(NoInlineDefine    , 1, 0, "__NO_INLINE__ predefined macro")
192 COMPATIBLE_LANGOPT(Deprecated        , 1, 0, "__DEPRECATED predefined macro")
193 COMPATIBLE_LANGOPT(FastMath          , 1, 0, "fast FP math optimizations, and __FAST_MATH__ predefined macro")
194 COMPATIBLE_LANGOPT(FiniteMathOnly    , 1, 0, "__FINITE_MATH_ONLY__ predefined macro")
195 COMPATIBLE_LANGOPT(UnsafeFPMath      , 1, 0, "Unsafe Floating Point Math")
196 BENIGN_LANGOPT(AllowFPReassoc    , 1, 0, "Permit Floating Point reassociation")
197 BENIGN_LANGOPT(NoHonorNaNs       , 1, 0, "Permit Floating Point optimization without regard to NaN")
198 BENIGN_LANGOPT(NoHonorInfs       , 1, 0, "Permit Floating Point optimization without regard to infinities")
199 BENIGN_LANGOPT(NoSignedZero      , 1, 0, "Permit Floating Point optimization without regard to signed zeros")
200 BENIGN_LANGOPT(AllowRecip        , 1, 0, "Permit Floating Point reciprocal")
201 BENIGN_LANGOPT(ApproxFunc        , 1, 0, "Permit Floating Point approximation")
202
203 BENIGN_LANGOPT(ObjCGCBitmapPrint , 1, 0, "printing of GC's bitmap layout for __weak/__strong ivars")
204
205 BENIGN_LANGOPT(AccessControl     , 1, 1, "C++ access control")
206 LANGOPT(CharIsSigned      , 1, 1, "signed char")
207 LANGOPT(WCharSize         , 4, 0, "width of wchar_t")
208 LANGOPT(WCharIsSigned        , 1, 0, "signed or unsigned wchar_t")
209 ENUM_LANGOPT(MSPointerToMemberRepresentationMethod, PragmaMSPointersToMembersKind, 2, PPTMK_BestCase, "member-pointer representation method")
210 ENUM_LANGOPT(DefaultCallingConv, DefaultCallingConvention, 3, DCC_None, "default calling convention")
211
212 LANGOPT(ShortEnums        , 1, 0, "short enum types")
213
214 LANGOPT(OpenCL            , 1, 0, "OpenCL")
215 LANGOPT(OpenCLVersion     , 32, 0, "OpenCL C version")
216 LANGOPT(OpenCLCPlusPlus   , 1, 0, "C++ for OpenCL")
217 LANGOPT(OpenCLCPlusPlusVersion     , 32, 0, "C++ for OpenCL version")
218 LANGOPT(NativeHalfType    , 1, 0, "Native half type support")
219 LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns")
220 LANGOPT(HalfArgsAndReturns, 1, 0, "half args and returns")
221 LANGOPT(CUDA              , 1, 0, "CUDA")
222 LANGOPT(HIP               , 1, 0, "HIP")
223 LANGOPT(OpenMP            , 32, 0, "OpenMP support and version of OpenMP (31, 40 or 45)")
224 LANGOPT(OpenMPSimd        , 1, 0, "Use SIMD only OpenMP support.")
225 LANGOPT(OpenMPUseTLS      , 1, 0, "Use TLS for threadprivates or runtime calls")
226 LANGOPT(OpenMPIsDevice    , 1, 0, "Generate code only for OpenMP target device")
227 LANGOPT(OpenMPCUDAMode    , 1, 0, "Generate code for OpenMP pragmas in SIMT/SPMD mode")
228 LANGOPT(OpenMPIRBuilder   , 1, 0, "Use the experimental OpenMP-IR-Builder codegen path.")
229 LANGOPT(OpenMPCUDAForceFullRuntime , 1, 0, "Force to use full runtime in all constructs when offloading to CUDA devices")
230 LANGOPT(OpenMPCUDANumSMs  , 32, 0, "Number of SMs for CUDA devices.")
231 LANGOPT(OpenMPCUDABlocksPerSM  , 32, 0, "Number of blocks per SM for CUDA devices.")
232 LANGOPT(OpenMPCUDAReductionBufNum , 32, 1024, "Number of the reduction records in the intermediate reduction buffer used for the teams reductions.")
233 LANGOPT(OpenMPOptimisticCollapse  , 1, 0, "Use at most 32 bits to represent the collapsed loop nest counter.")
234 LANGOPT(OpenMPCUDATargetParallel, 1, 0, "Support parallel execution of target region on Cuda-based devices.")
235 LANGOPT(RenderScript      , 1, 0, "RenderScript")
236
237 LANGOPT(CUDAIsDevice      , 1, 0, "compiling for CUDA device")
238 LANGOPT(CUDAAllowVariadicFunctions, 1, 0, "allowing variadic functions in CUDA device code")
239 LANGOPT(CUDAHostDeviceConstexpr, 1, 1, "treating unattributed constexpr functions as __host__ __device__")
240 LANGOPT(CUDADeviceApproxTranscendentals, 1, 0, "using approximate transcendental functions")
241 LANGOPT(GPURelocatableDeviceCode, 1, 0, "generate relocatable device code")
242 LANGOPT(GPUAllowDeviceInit, 1, 0, "allowing device side global init functions for HIP")
243 LANGOPT(GPUMaxThreadsPerBlock, 32, 1024, "default max threads per block for kernel launch bounds for HIP")
244
245 LANGOPT(SYCL              , 1, 0, "SYCL")
246 LANGOPT(SYCLIsDevice      , 1, 0, "Generate code for SYCL device")
247 LANGOPT(SYCLVersion       , 32, 0, "Version of the SYCL standard used")
248
249 LANGOPT(HIPUseNewLaunchAPI, 1, 0, "Use new kernel launching API for HIP")
250
251 LANGOPT(SizedDeallocation , 1, 0, "sized deallocation")
252 LANGOPT(AlignedAllocation , 1, 0, "aligned allocation")
253 LANGOPT(AlignedAllocationUnavailable, 1, 0, "aligned allocation functions are unavailable")
254 LANGOPT(NewAlignOverride  , 32, 0, "maximum alignment guaranteed by '::operator new(size_t)'")
255 LANGOPT(ConceptSatisfactionCaching , 1, 1, "enable satisfaction caching for C++20 Concepts")
256 BENIGN_LANGOPT(ModulesCodegen , 1, 0, "Modules code generation")
257 BENIGN_LANGOPT(ModulesDebugInfo , 1, 0, "Modules debug info")
258 BENIGN_LANGOPT(ElideConstructors , 1, 1, "C++ copy constructor elision")
259 BENIGN_LANGOPT(DumpRecordLayouts , 1, 0, "dumping the layout of IRgen'd records")
260 BENIGN_LANGOPT(DumpRecordLayoutsSimple , 1, 0, "dumping the layout of IRgen'd records in a simple form")
261 BENIGN_LANGOPT(DumpVTableLayouts , 1, 0, "dumping the layouts of emitted vtables")
262 LANGOPT(NoConstantCFStrings , 1, 0, "no constant CoreFoundation strings")
263 BENIGN_LANGOPT(InlineVisibilityHidden , 1, 0, "hidden visibility for inline C++ methods")
264 LANGOPT(GlobalAllocationFunctionVisibilityHidden , 1, 0, "hidden visibility for global operator new and delete declaration")
265 BENIGN_LANGOPT(ParseUnknownAnytype, 1, 0, "__unknown_anytype")
266 BENIGN_LANGOPT(DebuggerSupport , 1, 0, "debugger support")
267 BENIGN_LANGOPT(DebuggerCastResultToId, 1, 0, "for 'po' in the debugger, cast the result to id if it is of unknown type")
268 BENIGN_LANGOPT(DebuggerObjCLiteral , 1, 0, "debugger Objective-C literals and subscripting support")
269
270 BENIGN_LANGOPT(SpellChecking , 1, 1, "spell-checking")
271 LANGOPT(SinglePrecisionConstants , 1, 0, "treating double-precision floating point constants as single precision constants")
272 LANGOPT(FastRelaxedMath , 1, 0, "OpenCL fast relaxed math")
273 /// FP_CONTRACT mode (on/off/fast).
274 BENIGN_ENUM_LANGOPT(DefaultFPContractMode, FPModeKind, 2, FPM_Off, "FP contraction type")
275 COMPATIBLE_LANGOPT(ExpStrictFP, 1, false, "Enable experimental strict floating point")
276 BENIGN_ENUM_LANGOPT(FPRoundingMode, RoundingMode, 3, RoundingMode::NearestTiesToEven, "FP Rounding Mode type")
277 BENIGN_ENUM_LANGOPT(FPExceptionMode, FPExceptionModeKind, 2, FPE_Ignore, "FP Exception Behavior Mode type")
278 LANGOPT(NoBitFieldTypeAlign , 1, 0, "bit-field type alignment")
279 LANGOPT(HexagonQdsp6Compat , 1, 0, "hexagon-qdsp6 backward compatibility")
280 LANGOPT(ObjCAutoRefCount , 1, 0, "Objective-C automated reference counting")
281 LANGOPT(ObjCWeakRuntime     , 1, 0, "__weak support in the ARC runtime")
282 LANGOPT(ObjCWeak            , 1, 0, "Objective-C __weak in ARC and MRC files")
283 LANGOPT(ObjCSubscriptingLegacyRuntime         , 1, 0, "Subscripting support in legacy ObjectiveC runtime")
284 BENIGN_LANGOPT(CompatibilityQualifiedIdBlockParamTypeChecking, 1, 0,
285                "compatibility mode for type checking block parameters "
286                "involving qualified id types")
287 LANGOPT(CFProtectionBranch , 1, 0, "Control-Flow Branch Protection enabled")
288 LANGOPT(FakeAddressSpaceMap , 1, 0, "OpenCL fake address space map")
289 ENUM_LANGOPT(AddressSpaceMapMangling , AddrSpaceMapMangling, 2, ASMM_Target, "OpenCL address space map mangling mode")
290 LANGOPT(IncludeDefaultHeader, 1, 0, "Include default header file for OpenCL")
291 LANGOPT(DeclareOpenCLBuiltins, 1, 0, "Declare OpenCL builtin functions")
292 BENIGN_LANGOPT(DelayedTemplateParsing , 1, 0, "delayed template parsing")
293 LANGOPT(BlocksRuntimeOptional , 1, 0, "optional blocks runtime")
294 LANGOPT(
295     CompleteMemberPointers, 1, 0,
296     "Require member pointer base types to be complete at the point where the "
297     "type's inheritance model would be determined under the Microsoft ABI")
298
299 ENUM_LANGOPT(GC, GCMode, 2, NonGC, "Objective-C Garbage Collection mode")
300 ENUM_LANGOPT(ValueVisibilityMode, Visibility, 3, DefaultVisibility,
301              "default visibility for functions and variables [-fvisibility]")
302 ENUM_LANGOPT(TypeVisibilityMode, Visibility, 3, DefaultVisibility,
303              "default visibility for types [-ftype-visibility]")
304 LANGOPT(SetVisibilityForExternDecls, 1, 0,
305         "apply global symbol visibility to external declarations without an explicit visibility")
306 BENIGN_LANGOPT(SemanticInterposition        , 1, 0, "semantic interposition")
307 BENIGN_LANGOPT(ExplicitNoSemanticInterposition, 1, 0, "explicitly no semantic interposition")
308 ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,
309              "stack protector mode")
310 ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, TrivialAutoVarInitKind::Uninitialized,
311              "trivial automatic variable initialization")
312 VALUE_LANGOPT(TrivialAutoVarInitStopAfter, 32, 0,
313              "stop trivial automatic variable initialization after the specified number of instances. Must be greater than 0.")
314 ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, SOB_Undefined,
315              "signed integer overflow handling")
316
317 BENIGN_LANGOPT(ArrowDepth, 32, 256,
318                "maximum number of operator->s to follow")
319 BENIGN_LANGOPT(InstantiationDepth, 32, 1024,
320                "maximum template instantiation depth")
321 BENIGN_LANGOPT(ConstexprCallDepth, 32, 512,
322                "maximum constexpr call depth")
323 BENIGN_LANGOPT(ConstexprStepLimit, 32, 1048576,
324                "maximum constexpr evaluation steps")
325 BENIGN_LANGOPT(EnableNewConstInterp, 1, 0,
326                "enable the experimental new constant interpreter")
327 BENIGN_LANGOPT(BracketDepth, 32, 256,
328                "maximum bracket nesting depth")
329 BENIGN_LANGOPT(NumLargeByValueCopy, 32, 0,
330         "if non-zero, warn about parameter or return Warn if parameter/return value is larger in bytes than this setting. 0 is no check.")
331 VALUE_LANGOPT(MSCompatibilityVersion, 32, 0, "Microsoft Visual C/C++ Version")
332 ENUM_LANGOPT(VtorDispMode, MSVtorDispMode, 2, MSVtorDispMode::ForVBaseOverride,
333              "How many vtordisps to insert")
334
335 LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling")
336
337 LANGOPT(RetainCommentsFromSystemHeaders, 1, 0, "retain documentation comments from system headers in the AST")
338
339 LANGOPT(SanitizeAddressFieldPadding, 2, 0, "controls how aggressive is ASan "
340                                            "field padding (0: none, 1:least "
341                                            "aggressive, 2: more aggressive)")
342
343 LANGOPT(Cmse, 1, 0, "ARM Security extensions support")
344
345 LANGOPT(XRayInstrument, 1, 0, "controls whether to do XRay instrumentation")
346 LANGOPT(XRayAlwaysEmitCustomEvents, 1, 0,
347         "controls whether to always emit intrinsic calls to "
348         "__xray_customevent(...) builtin.")
349 LANGOPT(XRayAlwaysEmitTypedEvents, 1, 0,
350         "controls whether to always emit intrinsic calls to "
351         "__xray_typedevent(...) builtin.")
352
353 LANGOPT(ForceEmitVTables, 1, 0, "whether to emit all vtables")
354
355 BENIGN_LANGOPT(AllowEditorPlaceholders, 1, 0,
356                "allow editor placeholders in source")
357
358 ENUM_LANGOPT(ClangABICompat, ClangABI, 4, ClangABI::Latest,
359              "version of Clang that we should attempt to be ABI-compatible "
360              "with")
361
362 COMPATIBLE_VALUE_LANGOPT(FunctionAlignment, 5, 0, "Default alignment for functions")
363
364 LANGOPT(FixedPoint, 1, 0, "fixed point types")
365 LANGOPT(PaddingOnUnsignedFixedPoint, 1, 0,
366         "unsigned fixed point types having one extra padding bit")
367
368 LANGOPT(RegisterStaticDestructors, 1, 1, "Register C++ static destructors")
369
370 LANGOPT(MatrixTypes, 1, 0, "Enable or disable the builtin matrix type")
371
372 COMPATIBLE_VALUE_LANGOPT(MaxTokens, 32, 0, "Max number of tokens per TU or 0")
373
374 ENUM_LANGOPT(SignReturnAddressScope, SignReturnAddressScopeKind, 2, SignReturnAddressScopeKind::None,
375              "Scope of return address signing")
376 ENUM_LANGOPT(SignReturnAddressKey, SignReturnAddressKeyKind, 1, SignReturnAddressKeyKind::AKey,
377              "Key used for return address signing")
378 LANGOPT(BranchTargetEnforcement, 1, 0, "Branch-target enforcement enabled")
379
380 LANGOPT(SpeculativeLoadHardening, 1, 0, "Speculative load hardening enabled")
381
382 LANGOPT(RelativeCXXABIVTables, 1, 0,
383         "Use an ABI-incompatible v-table layout that uses relative references")
384
385 #undef LANGOPT
386 #undef COMPATIBLE_LANGOPT
387 #undef BENIGN_LANGOPT
388 #undef ENUM_LANGOPT
389 #undef COMPATIBLE_ENUM_LANGOPT
390 #undef BENIGN_ENUM_LANGOPT
391 #undef VALUE_LANGOPT
392 #undef COMPATIBLE_VALUE_LANGOPT
393 #undef BENIGN_VALUE_LANGOPT