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 |