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