Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
14 | pmbaty | 1 | //===--- CodeGenOptions.def - Code generation 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 code generation options. Users of this file |
||
10 | // must define the CODEGENOPT macro to make use of this information. |
||
11 | // Optionally, the user may also define ENUM_CODEGENOPT (for options |
||
12 | // that have enumeration type and VALUE_CODEGENOPT is a code |
||
13 | // generation option that describes a value rather than a flag. |
||
14 | // |
||
15 | //===----------------------------------------------------------------------===// |
||
16 | #ifndef CODEGENOPT |
||
17 | # error Define the CODEGENOPT macro to handle language options |
||
18 | #endif |
||
19 | |||
20 | #ifndef VALUE_CODEGENOPT |
||
21 | # define VALUE_CODEGENOPT(Name, Bits, Default) \ |
||
22 | CODEGENOPT(Name, Bits, Default) |
||
23 | #endif |
||
24 | |||
25 | #ifndef ENUM_CODEGENOPT |
||
26 | # define ENUM_CODEGENOPT(Name, Type, Bits, Default) \ |
||
27 | CODEGENOPT(Name, Bits, Default) |
||
28 | #endif |
||
29 | |||
30 | CODEGENOPT(DisableIntegratedAS, 1, 0) ///< -no-integrated-as |
||
31 | ENUM_CODEGENOPT(CompressDebugSections, llvm::DebugCompressionType, 2, |
||
32 | llvm::DebugCompressionType::None) |
||
33 | CODEGENOPT(RelaxELFRelocations, 1, 1) ///< -Wa,-mrelax-relocations={yes,no} |
||
34 | CODEGENOPT(AsmVerbose , 1, 0) ///< -dA, -fverbose-asm. |
||
35 | CODEGENOPT(Dwarf64 , 1, 0) ///< -gdwarf64. |
||
36 | CODEGENOPT(Dwarf32 , 1, 1) ///< -gdwarf32. |
||
37 | CODEGENOPT(PreserveAsmComments, 1, 1) ///< -dA, -fno-preserve-as-comments. |
||
38 | CODEGENOPT(AssumeSaneOperatorNew , 1, 1) ///< implicit __attribute__((malloc)) operator new |
||
39 | CODEGENOPT(Autolink , 1, 1) ///< -fno-autolink |
||
40 | CODEGENOPT(ObjCAutoRefCountExceptions , 1, 0) ///< Whether ARC should be EH-safe. |
||
41 | CODEGENOPT(Backchain , 1, 0) ///< -mbackchain |
||
42 | CODEGENOPT(ControlFlowGuardNoChecks , 1, 0) ///< -cfguard-no-checks |
||
43 | CODEGENOPT(ControlFlowGuard , 1, 0) ///< -cfguard |
||
44 | CODEGENOPT(EHContGuard , 1, 0) ///< -ehcontguard |
||
45 | CODEGENOPT(CXAAtExit , 1, 1) ///< Use __cxa_atexit for calling destructors. |
||
46 | CODEGENOPT(RegisterGlobalDtorsWithAtExit, 1, 1) ///< Use atexit or __cxa_atexit to register global destructors. |
||
47 | CODEGENOPT(CXXCtorDtorAliases, 1, 0) ///< Emit complete ctors/dtors as linker |
||
48 | ///< aliases to base ctors when possible. |
||
49 | CODEGENOPT(DataSections , 1, 0) ///< Set when -fdata-sections is enabled. |
||
50 | CODEGENOPT(UniqueSectionNames, 1, 1) ///< Set for -funique-section-names. |
||
51 | CODEGENOPT(UniqueBasicBlockSectionNames, 1, 1) ///< Set for -funique-basic-block-section-names, |
||
52 | ///< Produce unique section names with |
||
53 | ///< basic block sections. |
||
54 | CODEGENOPT(EnableAIXExtendedAltivecABI, 1, 0) ///< Set for -mabi=vec-extabi. Enables the extended Altivec ABI on AIX. |
||
55 | ENUM_CODEGENOPT(FramePointer, FramePointerKind, 2, FramePointerKind::None) /// frame-pointer: all,non-leaf,none |
||
56 | |||
57 | CODEGENOPT(ClearASTBeforeBackend , 1, 0) ///< Free the AST before running backend code generation. Only works with -disable-free. |
||
58 | CODEGENOPT(DisableFree , 1, 0) ///< Don't free memory. |
||
59 | CODEGENOPT(DiscardValueNames , 1, 0) ///< Discard Value Names from the IR (LLVMContext flag) |
||
60 | CODEGENOPT(DisableLLVMPasses , 1, 0) ///< Don't run any LLVM IR passes to get |
||
61 | ///< the pristine IR generated by the |
||
62 | ///< frontend. |
||
63 | CODEGENOPT(DisableLifetimeMarkers, 1, 0) ///< Don't emit any lifetime markers |
||
64 | CODEGENOPT(DisableO0ImplyOptNone , 1, 0) ///< Don't annonate function with optnone at O0 |
||
65 | CODEGENOPT(ExperimentalStrictFloatingPoint, 1, 0) ///< Enables the new, experimental |
||
66 | ///< strict floating point. |
||
67 | CODEGENOPT(EnableNoundefAttrs, 1, 0) ///< Enable emitting `noundef` attributes on IR call arguments and return values |
||
68 | CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new |
||
69 | ///< pass manager. |
||
70 | CODEGENOPT(DisableRedZone , 1, 0) ///< Set when -mno-red-zone is enabled. |
||
71 | CODEGENOPT(EmitCallSiteInfo, 1, 0) ///< Emit call site info only in the case of |
||
72 | ///< '-g' + 'O>0' level. |
||
73 | CODEGENOPT(EnableDIPreservationVerify, 1, 0) ///< Enable di preservation verify |
||
74 | ///< each (it means check |
||
75 | ///< the original debug info |
||
76 | ///< metadata preservation). |
||
77 | CODEGENOPT(IndirectTlsSegRefs, 1, 0) ///< Set when -mno-tls-direct-seg-refs |
||
78 | ///< is specified. |
||
79 | CODEGENOPT(DisableTailCalls , 1, 0) ///< Do not emit tail calls. |
||
80 | CODEGENOPT(NoEscapingBlockTailCalls, 1, 0) ///< Do not emit tail calls from |
||
81 | ///< escaping blocks. |
||
82 | CODEGENOPT(EmitDeclMetadata , 1, 0) ///< Emit special metadata indicating what |
||
83 | ///< Decl* various IR entities came from. |
||
84 | ///< Only useful when running CodeGen as a |
||
85 | ///< subroutine. |
||
86 | CODEGENOPT(EmitVersionIdentMetadata , 1, 1) ///< Emit compiler version metadata. |
||
87 | CODEGENOPT(EmitGcovArcs , 1, 0) ///< Emit coverage data files, aka. GCDA. |
||
88 | CODEGENOPT(EmitGcovNotes , 1, 0) ///< Emit coverage "notes" files, aka GCNO. |
||
89 | CODEGENOPT(EmitOpenCLArgMetadata , 1, 0) ///< Emit OpenCL kernel arg metadata. |
||
90 | CODEGENOPT(EmulatedTLS , 1, 0) ///< Set by default or -f[no-]emulated-tls. |
||
91 | /// Embed Bitcode mode (off/all/bitcode/marker). |
||
92 | ENUM_CODEGENOPT(EmbedBitcode, EmbedBitcodeKind, 2, Embed_Off) |
||
93 | /// Inline asm dialect, -masm=(att|intel) |
||
94 | ENUM_CODEGENOPT(InlineAsmDialect, InlineAsmDialectKind, 1, IAD_ATT) |
||
95 | CODEGENOPT(ForbidGuardVariables , 1, 0) ///< Issue errors if C++ guard variables |
||
96 | ///< are required. |
||
97 | CODEGENOPT(FunctionSections , 1, 0) ///< Set when -ffunction-sections is enabled. |
||
98 | CODEGENOPT(InstrumentFunctions , 1, 0) ///< Set when -finstrument-functions is |
||
99 | ///< enabled. |
||
100 | CODEGENOPT(InstrumentFunctionsAfterInlining , 1, 0) ///< Set when |
||
101 | ///< -finstrument-functions-after-inlining is enabled. |
||
102 | CODEGENOPT(InstrumentFunctionEntryBare , 1, 0) ///< Set when |
||
103 | ///< -finstrument-function-entry-bare is enabled. |
||
104 | CODEGENOPT(CFProtectionReturn , 1, 0) ///< if -fcf-protection is |
||
105 | ///< set to full or return. |
||
106 | CODEGENOPT(CFProtectionBranch , 1, 0) ///< if -fcf-protection is |
||
107 | ///< set to full or branch. |
||
108 | CODEGENOPT(FunctionReturnThunks, 1, 0) ///< -mfunction-return={keep|thunk-extern} |
||
109 | CODEGENOPT(IndirectBranchCSPrefix, 1, 0) ///< if -mindirect-branch-cs-prefix |
||
110 | ///< is set. |
||
111 | |||
112 | CODEGENOPT(XRayInstrumentFunctions , 1, 0) ///< Set when -fxray-instrument is |
||
113 | ///< enabled. |
||
114 | CODEGENOPT(StackSizeSection , 1, 0) ///< Set when -fstack-size-section is enabled. |
||
115 | CODEGENOPT(ForceDwarfFrameSection , 1, 0) ///< Set when -fforce-dwarf-frame is |
||
116 | ///< enabled. |
||
117 | |||
118 | ///< Set when -femit-dwarf-unwind is passed. |
||
119 | ENUM_CODEGENOPT(EmitDwarfUnwind, llvm::EmitDwarfUnwindType, 2, |
||
120 | llvm::EmitDwarfUnwindType::Default) |
||
121 | |||
122 | ///< Set when -fxray-always-emit-customevents is enabled. |
||
123 | CODEGENOPT(XRayAlwaysEmitCustomEvents , 1, 0) |
||
124 | |||
125 | ///< Set when -fxray-always-emit-typedevents is enabled. |
||
126 | CODEGENOPT(XRayAlwaysEmitTypedEvents , 1, 0) |
||
127 | |||
128 | ///< Set when -fxray-ignore-loops is enabled. |
||
129 | CODEGENOPT(XRayIgnoreLoops , 1, 0) |
||
130 | |||
131 | ///< Set with -fno-xray-function-index to omit the index section. |
||
132 | CODEGENOPT(XRayOmitFunctionIndex , 1, 0) |
||
133 | |||
134 | |||
135 | ///< Set the minimum number of instructions in a function to determine selective |
||
136 | ///< XRay instrumentation. |
||
137 | VALUE_CODEGENOPT(XRayInstructionThreshold , 32, 200) |
||
138 | |||
139 | ///< Only instrument 1 in N functions, by dividing functions into N total groups and |
||
140 | ///< instrumenting only the specified group at a time. Group numbers start at 0 |
||
141 | ///< and end at N-1. |
||
142 | VALUE_CODEGENOPT(XRayTotalFunctionGroups, 32, 1) |
||
143 | VALUE_CODEGENOPT(XRaySelectedFunctionGroup, 32, 0) |
||
144 | |||
145 | VALUE_CODEGENOPT(PatchableFunctionEntryCount , 32, 0) ///< Number of NOPs at function entry |
||
146 | VALUE_CODEGENOPT(PatchableFunctionEntryOffset , 32, 0) |
||
147 | |||
148 | CODEGENOPT(HotPatch, 1, 0) ///< Supports the Microsoft /HOTPATCH flag and |
||
149 | ///< generates a 'patchable-function' attribute. |
||
150 | |||
151 | CODEGENOPT(JMCInstrument, 1, 0) ///< Set when -fjmc is enabled. |
||
152 | CODEGENOPT(InstrumentForProfiling , 1, 0) ///< Set when -pg is enabled. |
||
153 | CODEGENOPT(CallFEntry , 1, 0) ///< Set when -mfentry is enabled. |
||
154 | CODEGENOPT(MNopMCount , 1, 0) ///< Set when -mnop-mcount is enabled. |
||
155 | CODEGENOPT(RecordMCount , 1, 0) ///< Set when -mrecord-mcount is enabled. |
||
156 | CODEGENOPT(PackedStack , 1, 0) ///< Set when -mpacked-stack is enabled. |
||
157 | CODEGENOPT(LessPreciseFPMAD , 1, 0) ///< Enable less precise MAD instructions to |
||
158 | ///< be generated. |
||
159 | CODEGENOPT(PrepareForLTO , 1, 0) ///< Set when -flto is enabled on the |
||
160 | ///< compile step. |
||
161 | CODEGENOPT(PrepareForThinLTO , 1, 0) ///< Set when -flto=thin is enabled on the |
||
162 | ///< compile step. |
||
163 | CODEGENOPT(LTOUnit, 1, 0) ///< Emit IR to support LTO unit features (CFI, whole |
||
164 | ///< program vtable opt). |
||
165 | CODEGENOPT(EnableSplitLTOUnit, 1, 0) ///< Enable LTO unit splitting to support |
||
166 | /// CFI and traditional whole program |
||
167 | /// devirtualization that require whole |
||
168 | /// program IR support. |
||
169 | CODEGENOPT(IncrementalLinkerCompatible, 1, 0) ///< Emit an object file which can |
||
170 | ///< be used with an incremental |
||
171 | ///< linker. |
||
172 | CODEGENOPT(MergeAllConstants , 1, 1) ///< Merge identical constants. |
||
173 | CODEGENOPT(MergeFunctions , 1, 0) ///< Set when -fmerge-functions is enabled. |
||
174 | CODEGENOPT(NoCommon , 1, 0) ///< Set when -fno-common or C++ is enabled. |
||
175 | CODEGENOPT(NoDwarfDirectoryAsm , 1, 0) ///< Set when -fno-dwarf-directory-asm is |
||
176 | ///< enabled. |
||
177 | CODEGENOPT(NoExecStack , 1, 0) ///< Set when -Wa,--noexecstack is enabled. |
||
178 | CODEGENOPT(FatalWarnings , 1, 0) ///< Set when -Wa,--fatal-warnings is |
||
179 | ///< enabled. |
||
180 | CODEGENOPT(NoWarn , 1, 0) ///< Set when -Wa,--no-warn is enabled. |
||
181 | CODEGENOPT(NoTypeCheck , 1, 0) ///< Set when -Wa,--no-type-check is enabled. |
||
182 | CODEGENOPT(MisExpect , 1, 0) ///< Set when -Wmisexpect is enabled |
||
183 | CODEGENOPT(EnableSegmentedStacks , 1, 0) ///< Set when -fsplit-stack is enabled. |
||
184 | CODEGENOPT(NoInlineLineTables, 1, 0) ///< Whether debug info should contain |
||
185 | ///< inline line tables. |
||
186 | CODEGENOPT(StackClashProtector, 1, 0) ///< Set when -fstack-clash-protection is enabled. |
||
187 | CODEGENOPT(NoImplicitFloat , 1, 0) ///< Set when -mno-implicit-float is enabled. |
||
188 | CODEGENOPT(NullPointerIsValid , 1, 0) ///< Assume Null pointer deference is defined. |
||
189 | CODEGENOPT(OpenCLCorrectlyRoundedDivSqrt, 1, 0) ///< -cl-fp32-correctly-rounded-divide-sqrt |
||
190 | CODEGENOPT(HIPCorrectlyRoundedDivSqrt, 1, 1) ///< -fno-hip-fp32-correctly-rounded-divide-sqrt |
||
191 | CODEGENOPT(HIPSaveKernelArgName, 1, 0) ///< Set when -fhip-kernel-arg-name is enabled. |
||
192 | CODEGENOPT(UniqueInternalLinkageNames, 1, 0) ///< Internal Linkage symbols get unique names. |
||
193 | CODEGENOPT(SplitMachineFunctions, 1, 0) ///< Split machine functions using profile information. |
||
194 | |||
195 | /// When false, this attempts to generate code as if the result of an |
||
196 | /// overflowing conversion matches the overflowing behavior of a target's native |
||
197 | /// float-to-int conversion instructions. |
||
198 | CODEGENOPT(StrictFloatCastOverflow, 1, 1) |
||
199 | |||
200 | CODEGENOPT(UniformWGSize , 1, 0) ///< -cl-uniform-work-group-size |
||
201 | CODEGENOPT(NoZeroInitializedInBSS , 1, 0) ///< -fno-zero-initialized-in-bss. |
||
202 | /// Method of Objective-C dispatch to use. |
||
203 | ENUM_CODEGENOPT(ObjCDispatchMethod, ObjCDispatchMethodKind, 2, Legacy) |
||
204 | /// Replace certain message sends with calls to ObjC runtime entrypoints |
||
205 | CODEGENOPT(ObjCConvertMessagesToRuntimeCalls , 1, 1) |
||
206 | CODEGENOPT(ObjCAvoidHeapifyLocalBlocks, 1, 0) |
||
207 | |||
208 | VALUE_CODEGENOPT(OptimizationLevel, 2, 0) ///< The -O[0-3] option specified. |
||
209 | VALUE_CODEGENOPT(OptimizeSize, 2, 0) ///< If -Os (==1) or -Oz (==2) is specified. |
||
210 | |||
211 | CODEGENOPT(AtomicProfileUpdate , 1, 0) ///< Set -fprofile-update=atomic |
||
212 | /// Choose profile instrumenation kind or no instrumentation. |
||
213 | ENUM_CODEGENOPT(ProfileInstr, ProfileInstrKind, 2, ProfileNone) |
||
214 | /// Choose profile kind for PGO use compilation. |
||
215 | ENUM_CODEGENOPT(ProfileUse, ProfileInstrKind, 2, ProfileNone) |
||
216 | /// Partition functions into N groups and select only functions in group i to be |
||
217 | /// instrumented. Selected group numbers can be 0 to N-1 inclusive. |
||
218 | VALUE_CODEGENOPT(ProfileTotalFunctionGroups, 32, 1) |
||
219 | VALUE_CODEGENOPT(ProfileSelectedFunctionGroup, 32, 0) |
||
220 | CODEGENOPT(CoverageMapping , 1, 0) ///< Generate coverage mapping regions to |
||
221 | ///< enable code coverage analysis. |
||
222 | CODEGENOPT(DumpCoverageMapping , 1, 0) ///< Dump the generated coverage mapping |
||
223 | ///< regions. |
||
224 | |||
225 | /// If -fpcc-struct-return or -freg-struct-return is specified. |
||
226 | ENUM_CODEGENOPT(StructReturnConvention, StructReturnConventionKind, 2, SRCK_Default) |
||
227 | |||
228 | CODEGENOPT(RelaxAll , 1, 0) ///< Relax all machine code instructions. |
||
229 | CODEGENOPT(RelaxedAliasing , 1, 0) ///< Set when -fno-strict-aliasing is enabled. |
||
230 | CODEGENOPT(StructPathTBAA , 1, 0) ///< Whether or not to use struct-path TBAA. |
||
231 | CODEGENOPT(NewStructPathTBAA , 1, 0) ///< Whether or not to use enhanced struct-path TBAA. |
||
232 | CODEGENOPT(SaveTempLabels , 1, 0) ///< Save temporary labels. |
||
233 | CODEGENOPT(SanitizeAddressUseAfterScope , 1, 0) ///< Enable use-after-scope detection |
||
234 | ///< in AddressSanitizer |
||
235 | ENUM_CODEGENOPT(SanitizeAddressUseAfterReturn, |
||
236 | llvm::AsanDetectStackUseAfterReturnMode, 2, |
||
237 | llvm::AsanDetectStackUseAfterReturnMode::Runtime |
||
238 | ) ///< Set detection mode for stack-use-after-return. |
||
239 | CODEGENOPT(SanitizeAddressPoisonCustomArrayCookie, 1, |
||
240 | 0) ///< Enable poisoning operator new[] which is not a replaceable |
||
241 | ///< global allocation function in AddressSanitizer |
||
242 | CODEGENOPT(SanitizeAddressGlobalsDeadStripping, 1, 0) ///< Enable linker dead stripping |
||
243 | ///< of globals in AddressSanitizer |
||
244 | CODEGENOPT(SanitizeAddressUseOdrIndicator, 1, 0) ///< Enable ODR indicator globals |
||
245 | CODEGENOPT(SanitizeMemoryTrackOrigins, 2, 0) ///< Enable tracking origins in |
||
246 | ///< MemorySanitizer |
||
247 | ENUM_CODEGENOPT(SanitizeAddressDtor, llvm::AsanDtorKind, 2, |
||
248 | llvm::AsanDtorKind::Global) ///< Set how ASan global |
||
249 | ///< destructors are emitted. |
||
250 | CODEGENOPT(SanitizeMemoryParamRetval, 1, 0) ///< Enable detection of uninitialized |
||
251 | ///< parameters and return values |
||
252 | ///< in MemorySanitizer |
||
253 | CODEGENOPT(SanitizeMemoryUseAfterDtor, 1, 0) ///< Enable use-after-delete detection |
||
254 | ///< in MemorySanitizer |
||
255 | CODEGENOPT(SanitizeCfiCrossDso, 1, 0) ///< Enable cross-dso support in CFI. |
||
256 | CODEGENOPT(SanitizeMinimalRuntime, 1, 0) ///< Use "_minimal" sanitizer runtime for |
||
257 | ///< diagnostics. |
||
258 | CODEGENOPT(SanitizeCfiICallGeneralizePointers, 1, 0) ///< Generalize pointer types in |
||
259 | ///< CFI icall function signatures |
||
260 | CODEGENOPT(SanitizeCfiCanonicalJumpTables, 1, 0) ///< Make jump table symbols canonical |
||
261 | ///< instead of creating a local jump table. |
||
262 | CODEGENOPT(SanitizeCoverageType, 2, 0) ///< Type of sanitizer coverage |
||
263 | ///< instrumentation. |
||
264 | CODEGENOPT(SanitizeCoverageIndirectCalls, 1, 0) ///< Enable sanitizer coverage |
||
265 | ///< for indirect calls. |
||
266 | CODEGENOPT(SanitizeCoverageTraceBB, 1, 0) ///< Enable basic block tracing in |
||
267 | ///< in sanitizer coverage. |
||
268 | CODEGENOPT(SanitizeCoverageTraceCmp, 1, 0) ///< Enable cmp instruction tracing |
||
269 | ///< in sanitizer coverage. |
||
270 | CODEGENOPT(SanitizeCoverageTraceDiv, 1, 0) ///< Enable div instruction tracing |
||
271 | ///< in sanitizer coverage. |
||
272 | CODEGENOPT(SanitizeCoverageTraceGep, 1, 0) ///< Enable GEP instruction tracing |
||
273 | ///< in sanitizer coverage. |
||
274 | CODEGENOPT(SanitizeCoverage8bitCounters, 1, 0) ///< Use 8-bit frequency counters |
||
275 | ///< in sanitizer coverage. |
||
276 | CODEGENOPT(SanitizeCoverageTracePC, 1, 0) ///< Enable PC tracing |
||
277 | ///< in sanitizer coverage. |
||
278 | CODEGENOPT(SanitizeCoverageTracePCGuard, 1, 0) ///< Enable PC tracing with guard |
||
279 | ///< in sanitizer coverage. |
||
280 | CODEGENOPT(SanitizeCoverageInline8bitCounters, 1, 0) ///< Use inline 8bit counters. |
||
281 | CODEGENOPT(SanitizeCoverageInlineBoolFlag, 1, 0) ///< Use inline bool flag. |
||
282 | CODEGENOPT(SanitizeCoveragePCTable, 1, 0) ///< Create a PC Table. |
||
283 | CODEGENOPT(SanitizeCoverageControlFlow, 1, 0) ///< Collect control flow |
||
284 | CODEGENOPT(SanitizeCoverageNoPrune, 1, 0) ///< Disable coverage pruning. |
||
285 | CODEGENOPT(SanitizeCoverageStackDepth, 1, 0) ///< Enable max stack depth tracing |
||
286 | CODEGENOPT(SanitizeCoverageTraceLoads, 1, 0) ///< Enable tracing of loads. |
||
287 | CODEGENOPT(SanitizeCoverageTraceStores, 1, 0) ///< Enable tracing of stores. |
||
288 | CODEGENOPT(SanitizeBinaryMetadataCovered, 1, 0) ///< Emit PCs for covered functions. |
||
289 | CODEGENOPT(SanitizeBinaryMetadataAtomics, 1, 0) ///< Emit PCs for atomic operations. |
||
290 | CODEGENOPT(SanitizeBinaryMetadataUAR, 1, 0) ///< Emit PCs for start of functions |
||
291 | ///< that are subject for use-after-return checking. |
||
292 | CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. |
||
293 | CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. |
||
294 | CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. |
||
295 | CODEGENOPT(SpeculativeLoadHardening, 1, 0) ///< Enable speculative load hardening. |
||
296 | CODEGENOPT(FineGrainedBitfieldAccesses, 1, 0) ///< Enable fine-grained bitfield accesses. |
||
297 | CODEGENOPT(StrictEnums , 1, 0) ///< Optimize based on strict enum definition. |
||
298 | CODEGENOPT(StrictVTablePointers, 1, 0) ///< Optimize based on the strict vtable pointers |
||
299 | CODEGENOPT(TimePasses , 1, 0) ///< Set when -ftime-report or -ftime-report= is enabled. |
||
300 | CODEGENOPT(TimePassesPerRun , 1, 0) ///< Set when -ftime-report=per-pass-run is enabled. |
||
301 | CODEGENOPT(TimeTrace , 1, 0) ///< Set when -ftime-trace is enabled. |
||
302 | VALUE_CODEGENOPT(TimeTraceGranularity, 32, 500) ///< Minimum time granularity (in microseconds), |
||
303 | ///< traced by time profiler |
||
304 | CODEGENOPT(UnrollLoops , 1, 0) ///< Control whether loops are unrolled. |
||
305 | CODEGENOPT(RerollLoops , 1, 0) ///< Control whether loops are rerolled. |
||
306 | CODEGENOPT(NoUseJumpTables , 1, 0) ///< Set when -fno-jump-tables is enabled. |
||
307 | VALUE_CODEGENOPT(UnwindTables, 2, 0) ///< Unwind tables (1) or asynchronous unwind tables (2) |
||
308 | CODEGENOPT(VectorizeLoop , 1, 0) ///< Run loop vectorizer. |
||
309 | CODEGENOPT(VectorizeSLP , 1, 0) ///< Run SLP vectorizer. |
||
310 | CODEGENOPT(ProfileSampleAccurate, 1, 0) ///< Sample profile is accurate. |
||
311 | |||
312 | /// Treat loops as finite: language, always, never. |
||
313 | ENUM_CODEGENOPT(FiniteLoops, FiniteLoopsKind, 2, FiniteLoopsKind::Language) |
||
314 | |||
315 | /// Attempt to use register sized accesses to bit-fields in structures, when |
||
316 | /// possible. |
||
317 | CODEGENOPT(UseRegisterSizedBitfieldAccess , 1, 0) |
||
318 | |||
319 | CODEGENOPT(VerifyModule , 1, 1) ///< Control whether the module should be run |
||
320 | ///< through the LLVM Verifier. |
||
321 | |||
322 | CODEGENOPT(StackRealignment , 1, 0) ///< Control whether to force stack |
||
323 | ///< realignment. |
||
324 | CODEGENOPT(UseInitArray , 1, 0) ///< Control whether to use .init_array or |
||
325 | ///< .ctors. |
||
326 | VALUE_CODEGENOPT(LoopAlignment , 32, 0) ///< Overrides default loop |
||
327 | ///< alignment, if not 0. |
||
328 | VALUE_CODEGENOPT(StackAlignment , 32, 0) ///< Overrides default stack |
||
329 | ///< alignment, if not 0. |
||
330 | VALUE_CODEGENOPT(StackProbeSize , 32, 4096) ///< Overrides default stack |
||
331 | ///< probe size, even if 0. |
||
332 | VALUE_CODEGENOPT(WarnStackSize , 32, UINT_MAX) ///< Set via -fwarn-stack-size. |
||
333 | CODEGENOPT(NoStackArgProbe, 1, 0) ///< Set when -mno-stack-arg-probe is used |
||
334 | CODEGENOPT(DebugStrictDwarf, 1, 1) ///< Whether or not to use strict DWARF info. |
||
335 | |||
336 | CODEGENOPT(EnableAssignmentTracking, 1,0) ///< Enable the Assignment Tracking |
||
337 | ///< debug info feature. |
||
338 | |||
339 | CODEGENOPT(DebugColumnInfo, 1, 0) ///< Whether or not to use column information |
||
340 | ///< in debug info. |
||
341 | |||
342 | CODEGENOPT(DebugTypeExtRefs, 1, 0) ///< Whether or not debug info should contain |
||
343 | ///< external references to a PCH or module. |
||
344 | |||
345 | CODEGENOPT(DebugExplicitImport, 1, 0) ///< Whether or not debug info should |
||
346 | ///< contain explicit imports for |
||
347 | ///< anonymous namespaces |
||
348 | |||
349 | /// Set debug info source file hashing algorithm. |
||
350 | ENUM_CODEGENOPT(DebugSrcHash, DebugSrcHashKind, 2, DSH_MD5) |
||
351 | |||
352 | CODEGENOPT(SplitDwarfInlining, 1, 1) ///< Whether to include inlining info in the |
||
353 | ///< skeleton CU to allow for symbolication |
||
354 | ///< of inline stack frames without .dwo files. |
||
355 | CODEGENOPT(DebugFwdTemplateParams, 1, 0) ///< Whether to emit complete |
||
356 | ///< template parameter descriptions in |
||
357 | ///< forward declarations (versus just |
||
358 | ///< including them in the name). |
||
359 | ENUM_CODEGENOPT(DebugSimpleTemplateNames, codegenoptions::DebugTemplateNamesKind, 2, codegenoptions::DebugTemplateNamesKind::Full) ///< Whether to emit template parameters |
||
360 | ///< in the textual names of template |
||
361 | ///< specializations. |
||
362 | ///< Implies DebugFwdTemplateNames to |
||
363 | ///< allow decorated names to be |
||
364 | ///< reconstructed when needed. |
||
365 | CODEGENOPT(EmitLLVMUseLists, 1, 0) ///< Control whether to serialize use-lists. |
||
366 | |||
367 | CODEGENOPT(WholeProgramVTables, 1, 0) ///< Whether to apply whole-program |
||
368 | /// vtable optimization. |
||
369 | |||
370 | CODEGENOPT(VirtualFunctionElimination, 1, 0) ///< Whether to apply the dead |
||
371 | /// virtual function elimination |
||
372 | /// optimization. |
||
373 | |||
374 | /// Whether to use public LTO visibility for entities in std and stdext |
||
375 | /// namespaces. This is enabled by clang-cl's /MT and /MTd flags. |
||
376 | CODEGENOPT(LTOVisibilityPublicStd, 1, 0) |
||
377 | |||
378 | /// The user specified number of registers to be used for integral arguments, |
||
379 | /// or 0 if unspecified. |
||
380 | VALUE_CODEGENOPT(NumRegisterParameters, 32, 0) |
||
381 | |||
382 | /// The threshold to put data into small data section. |
||
383 | VALUE_CODEGENOPT(SmallDataLimit, 32, 0) |
||
384 | |||
385 | /// The lower bound for a buffer to be considered for stack protection. |
||
386 | VALUE_CODEGENOPT(SSPBufferSize, 32, 0) |
||
387 | |||
388 | /// The kind of generated debug info. |
||
389 | ENUM_CODEGENOPT(DebugInfo, codegenoptions::DebugInfoKind, 4, codegenoptions::NoDebugInfo) |
||
390 | |||
391 | /// Whether to generate macro debug info. |
||
392 | CODEGENOPT(MacroDebugInfo, 1, 0) |
||
393 | |||
394 | /// Tune the debug info for this debugger. |
||
395 | ENUM_CODEGENOPT(DebuggerTuning, llvm::DebuggerKind, 3, |
||
396 | llvm::DebuggerKind::Default) |
||
397 | |||
398 | /// Dwarf version. Version zero indicates to LLVM that no DWARF should be |
||
399 | /// emitted. |
||
400 | VALUE_CODEGENOPT(DwarfVersion, 3, 0) |
||
401 | |||
402 | /// Whether we should emit CodeView debug information. It's possible to emit |
||
403 | /// CodeView and DWARF into the same object. |
||
404 | CODEGENOPT(EmitCodeView, 1, 0) |
||
405 | |||
406 | /// Whether to emit the .debug$H section containing hashes of CodeView types. |
||
407 | CODEGENOPT(CodeViewGHash, 1, 0) |
||
408 | |||
409 | /// Whether to emit the compiler path and command line into the CodeView debug information. |
||
410 | CODEGENOPT(CodeViewCommandLine, 1, 0) |
||
411 | |||
412 | /// The kind of inlining to perform. |
||
413 | ENUM_CODEGENOPT(Inlining, InliningMethod, 2, NormalInlining) |
||
414 | |||
415 | /// The maximum stack size a function can have to be considered for inlining. |
||
416 | VALUE_CODEGENOPT(InlineMaxStackSize, 32, UINT_MAX) |
||
417 | |||
418 | // Vector functions library to use. |
||
419 | ENUM_CODEGENOPT(VecLib, VectorLibrary, 3, NoLibrary) |
||
420 | |||
421 | /// The default TLS model to use. |
||
422 | ENUM_CODEGENOPT(DefaultTLSModel, TLSModel, 2, GeneralDynamicTLSModel) |
||
423 | |||
424 | /// Bit size of immediate TLS offsets (0 == use the default). |
||
425 | VALUE_CODEGENOPT(TLSSize, 8, 0) |
||
426 | |||
427 | /// The default stack protector guard offset to use. |
||
428 | VALUE_CODEGENOPT(StackProtectorGuardOffset, 32, INT_MAX) |
||
429 | |||
430 | /// Number of path components to strip when emitting checks. (0 == full |
||
431 | /// filename) |
||
432 | VALUE_CODEGENOPT(EmitCheckPathComponentsToStrip, 32, 0) |
||
433 | |||
434 | /// Whether to report the hotness of the code region for optimization remarks. |
||
435 | CODEGENOPT(DiagnosticsWithHotness, 1, 0) |
||
436 | |||
437 | /// Whether to use direct access relocations (instead of GOT) to reference external data symbols. |
||
438 | CODEGENOPT(DirectAccessExternalData, 1, 0) |
||
439 | |||
440 | /// Whether we should use the undefined behaviour optimization for control flow |
||
441 | /// paths that reach the end of a function without executing a required return. |
||
442 | CODEGENOPT(StrictReturn, 1, 1) |
||
443 | |||
444 | /// Whether emit extra debug info for sample pgo profile collection. |
||
445 | CODEGENOPT(DebugInfoForProfiling, 1, 0) |
||
446 | |||
447 | /// Whether emit pseudo probes for sample pgo profile collection. |
||
448 | CODEGENOPT(PseudoProbeForProfiling, 1, 0) |
||
449 | |||
450 | /// Whether 3-component vector type is preserved. |
||
451 | CODEGENOPT(PreserveVec3Type, 1, 0) |
||
452 | |||
453 | /// Whether to emit .debug_gnu_pubnames section instead of .debug_pubnames. |
||
454 | CODEGENOPT(DebugNameTable, 2, 0) |
||
455 | |||
456 | /// Whether to use DWARF base address specifiers in .debug_ranges. |
||
457 | CODEGENOPT(DebugRangesBaseAddress, 1, 0) |
||
458 | |||
459 | CODEGENOPT(NoPLT, 1, 0) |
||
460 | |||
461 | /// Whether to embed source in DWARF debug line section. |
||
462 | CODEGENOPT(EmbedSource, 1, 0) |
||
463 | |||
464 | /// Whether to emit all vtables |
||
465 | CODEGENOPT(ForceEmitVTables, 1, 0) |
||
466 | |||
467 | /// Whether to emit an address-significance table into the object file. |
||
468 | CODEGENOPT(Addrsig, 1, 0) |
||
469 | |||
470 | /// Whether to emit unused static constants. |
||
471 | CODEGENOPT(KeepStaticConsts, 1, 0) |
||
472 | |||
473 | /// Whether to follow the AAPCS enforcing at least one read before storing to a volatile bitfield |
||
474 | CODEGENOPT(ForceAAPCSBitfieldLoad, 1, 0) |
||
475 | |||
476 | /// Assume that by-value parameters do not alias any other values. |
||
477 | CODEGENOPT(PassByValueIsNoAlias, 1, 0) |
||
478 | |||
479 | /// Whether to not follow the AAPCS that enforces volatile bit-field access width to be |
||
480 | /// according to the field declaring type width. |
||
481 | CODEGENOPT(AAPCSBitfieldWidth, 1, 1) |
||
482 | |||
483 | /// Sets the IEEE bit in the expected default floating point mode register. |
||
484 | /// Floating point opcodes that support exception flag gathering quiet and |
||
485 | /// propagate signaling NaN inputs per IEEE 754-2008 (AMDGPU Only) |
||
486 | CODEGENOPT(EmitIEEENaNCompliantInsts, 1, 1) |
||
487 | |||
488 | // Whether to emit Swift Async function extended frame information: auto, |
||
489 | // never, always. |
||
490 | ENUM_CODEGENOPT(SwiftAsyncFramePointer, SwiftAsyncFramePointerKind, 2, |
||
491 | SwiftAsyncFramePointerKind::Always) |
||
492 | |||
493 | /// Whether to skip RAX setup when passing variable arguments (x86 only). |
||
494 | CODEGENOPT(SkipRaxSetup, 1, 0) |
||
495 | |||
496 | /// Whether to zero out caller-used registers before returning. |
||
497 | ENUM_CODEGENOPT(ZeroCallUsedRegs, llvm::ZeroCallUsedRegs::ZeroCallUsedRegsKind, |
||
498 | 5, llvm::ZeroCallUsedRegs::ZeroCallUsedRegsKind::Skip) |
||
499 | |||
500 | /// Whether to use opaque pointers. |
||
501 | CODEGENOPT(OpaquePointers, 1, 0) |
||
502 | |||
503 | /// Modify C++ ABI to returning `this` pointer from constructors and |
||
504 | /// non-deleting destructors. (No effect on Microsoft ABI.) |
||
505 | CODEGENOPT(CtorDtorReturnThis, 1, 0) |
||
506 | |||
507 | #undef CODEGENOPT |
||
508 | #undef ENUM_CODEGENOPT |
||
509 | #undef VALUE_CODEGENOPT |