1 module llvm.constants; 2 3 import llvm.config; 4 import llvm.types; 5 6 /+ Analysis +/ 7 8 enum : LLVMVerifierFailureAction 9 { 10 LLVMAbortProcessAction, 11 LLVMPrintMessageAction, 12 LLVMReturnStatusAction 13 } 14 15 /+ Core +/ 16 17 /++ Types and Enumerations ++/ 18 19 static if (LLVM_Version < asVersion(4, 0, 0)) 20 { 21 enum : LLVMAttribute 22 { 23 LLVMZExtAttribute = 1<<0, 24 LLVMSExtAttribute = 1<<1, 25 LLVMNoReturnAttribute = 1<<2, 26 LLVMInRegAttribute = 1<<3, 27 LLVMStructRetAttribute = 1<<4, 28 LLVMNoUnwindAttribute = 1<<5, 29 LLVMNoAliasAttribute = 1<<6, 30 LLVMByValAttribute = 1<<7, 31 LLVMNestAttribute = 1<<8, 32 LLVMReadNoneAttribute = 1<<9, 33 LLVMReadOnlyAttribute = 1<<10, 34 LLVMNoInlineAttribute = 1<<11, 35 LLVMAlwaysInlineAttribute = 1<<12, 36 LLVMOptimizeForSizeAttribute = 1<<13, 37 LLVMStackProtectAttribute = 1<<14, 38 LLVMStackProtectReqAttribute = 1<<15, 39 LLVMAlignment = 31<<16, 40 LLVMNoCaptureAttribute = 1<<21, 41 LLVMNoRedZoneAttribute = 1<<22, 42 LLVMNoImplicitFloatAttribute = 1<<23, 43 LLVMNakedAttribute = 1<<24, 44 LLVMInlineHintAttribute = 1<<25, 45 LLVMStackAlignment = 7<<26, 46 LLVMReturnsTwice = 1<<29, 47 LLVMUWTable = 1<<30, 48 LLVMNonLazyBind = 1<<31 49 } 50 } 51 52 enum : LLVMOpcode 53 { 54 LLVMRet = 1, 55 LLVMBr = 2, 56 LLVMSwitch = 3, 57 LLVMIndirectBr = 4, 58 LLVMInvoke = 5, 59 LLVMUnreachable = 7, 60 LLVMAdd = 8, 61 LLVMFAdd = 9, 62 LLVMSub = 10, 63 LLVMFSub = 11, 64 LLVMMul = 12, 65 LLVMFMul = 13, 66 LLVMUDiv = 14, 67 LLVMSDiv = 15, 68 LLVMFDiv = 16, 69 LLVMURem = 17, 70 LLVMSRem = 18, 71 LLVMFRem = 19, 72 LLVMShl = 20, 73 LLVMLShr = 21, 74 LLVMAShr = 22, 75 LLVMAnd = 23, 76 LLVMOr = 24, 77 LLVMXor = 25, 78 LLVMAlloca = 26, 79 LLVMLoad = 27, 80 LLVMStore = 28, 81 LLVMGetElementPtr = 29, 82 LLVMTrunc = 30, 83 LLVMZExt = 31, 84 LLVMSExt = 32, 85 LLVMFPToUI = 33, 86 LLVMFPToSI = 34, 87 LLVMUIToFP = 35, 88 LLVMSIToFP = 36, 89 LLVMFPTrunc = 37, 90 LLVMFPExt = 38, 91 LLVMPtrToInt = 39, 92 LLVMIntToPtr = 40, 93 LLVMBitCast = 41, 94 LLVMICmp = 42, 95 LLVMFCmp = 43, 96 LLVMPHI = 44, 97 LLVMCall = 45, 98 LLVMSelect = 46, 99 LLVMUserOp1 = 47, 100 LLVMUserOp2 = 48, 101 LLVMVAArg = 49, 102 LLVMExtractElement = 50, 103 LLVMInsertElement = 51, 104 LLVMShuffleVector = 52, 105 LLVMExtractValue = 53, 106 LLVMInsertValue = 54, 107 LLVMFence = 55, 108 LLVMAtomicCmpXchg = 56, 109 LLVMAtomicRMW = 57, 110 LLVMResume = 58, 111 LLVMLandingPad = 59, 112 } 113 static if (LLVM_Version >= asVersion(3, 4, 0)) 114 { 115 enum : LLVMOpcode 116 { 117 LLVMAddrSpaceCast = 60 118 } 119 } 120 static if (LLVM_Version >= asVersion(3, 8, 0)) 121 { 122 enum : LLVMOpcode 123 { 124 LLVMCleanupRet = 61, 125 LLVMCatchRet = 62, 126 LLVMCatchPad = 63, 127 LLVMCleanupPad = 64, 128 LLVMCatchSwitch = 65 129 } 130 } 131 132 static if (LLVM_Version >= asVersion(3, 9, 0)) 133 { 134 enum : LLVMValueKind 135 { 136 LLVMArgumentValueKind, 137 LLVMBasicBlockValueKind, 138 LLVMMemoryUseValueKind, 139 LLVMMemoryDefValueKind, 140 LLVMMemoryPhiValueKind, 141 LLVMFunctionValueKind, 142 LLVMGlobalAliasValueKind, 143 LLVMGlobalIFuncValueKind, 144 LLVMGlobalVariableValueKind, 145 LLVMBlockAddressValueKind, 146 LLVMConstantExprValueKind, 147 LLVMConstantArrayValueKind, 148 LLVMConstantStructValueKind, 149 LLVMConstantVectorValueKind, 150 LLVMUndefValueValueKind, 151 LLVMConstantAggregateZeroValueKind, 152 LLVMConstantDataArrayValueKind, 153 LLVMConstantDataVectorValueKind, 154 LLVMConstantIntValueKind, 155 LLVMConstantFPValueKind, 156 LLVMConstantPointerNullValueKind, 157 LLVMConstantTokenNoneValueKind, 158 LLVMMetadataAsValueValueKind, 159 LLVMInlineAsmValueKind, 160 LLVMInstructionValueKind, 161 } 162 163 enum : LLVMAttributeIndex 164 { 165 LLVMAttributeReturnIndex = 0U, 166 LLVMAttributeFunctionIndex = -1, 167 } 168 } 169 170 static if (LLVM_Version >= asVersion(3, 8, 0)) { 171 enum : LLVMTypeKind 172 { 173 LLVMVoidTypeKind, 174 LLVMHalfTypeKind, 175 LLVMFloatTypeKind, 176 LLVMDoubleTypeKind, 177 LLVMX86_FP80TypeKind, 178 LLVMFP128TypeKind, 179 LLVMPPC_FP128TypeKind, 180 LLVMLabelTypeKind, 181 LLVMIntegerTypeKind, 182 LLVMFunctionTypeKind, 183 LLVMStructTypeKind, 184 LLVMArrayTypeKind, 185 LLVMPointerTypeKind, 186 LLVMVectorTypeKind, 187 LLVMMetadataTypeKind, 188 LLVMX86_MMXTypeKind, 189 LLVMTokenTypeKind 190 } 191 } else { 192 enum : LLVMTypeKind 193 { 194 LLVMVoidTypeKind, 195 LLVMHalfTypeKind, 196 LLVMFloatTypeKind, 197 LLVMDoubleTypeKind, 198 LLVMX86_FP80TypeKind, 199 LLVMFP128TypeKind, 200 LLVMPPC_FP128TypeKind, 201 LLVMLabelTypeKind, 202 LLVMIntegerTypeKind, 203 LLVMFunctionTypeKind, 204 LLVMStructTypeKind, 205 LLVMArrayTypeKind, 206 LLVMPointerTypeKind, 207 LLVMVectorTypeKind, 208 LLVMMetadataTypeKind, 209 LLVMX86_MMXTypeKind, 210 LLVMTokenTypeKind 211 } 212 } 213 214 static if (LLVM_Version >= asVersion(3, 2, 0)) { 215 enum : LLVMLinkage 216 { 217 LLVMExternalLinkage, 218 LLVMAvailableExternallyLinkage, 219 LLVMLinkOnceAnyLinkage, 220 LLVMLinkOnceODRLinkage, 221 LLVMLinkOnceODRAutoHideLinkage, 222 LLVMWeakAnyLinkage, 223 LLVMWeakODRLinkage, 224 LLVMAppendingLinkage, 225 LLVMInternalLinkage, 226 LLVMPrivateLinkage, 227 LLVMDLLImportLinkage, 228 LLVMDLLExportLinkage, 229 LLVMExternalWeakLinkage, 230 LLVMGhostLinkage, 231 LLVMCommonLinkage, 232 LLVMLinkerPrivateLinkage, 233 LLVMLinkerPrivateWeakLinkage, 234 } 235 } else { 236 enum : LLVMLinkage 237 { 238 LLVMExternalLinkage, 239 LLVMAvailableExternallyLinkage, 240 LLVMLinkOnceAnyLinkage, 241 LLVMLinkOnceODRLinkage, 242 LLVMWeakAnyLinkage, 243 LLVMWeakODRLinkage, 244 LLVMAppendingLinkage, 245 LLVMInternalLinkage, 246 LLVMPrivateLinkage, 247 LLVMDLLImportLinkage, 248 LLVMDLLExportLinkage, 249 LLVMExternalWeakLinkage, 250 LLVMGhostLinkage, 251 LLVMCommonLinkage, 252 LLVMLinkerPrivateLinkage, 253 LLVMLinkerPrivateWeakLinkage, 254 LLVMLinkerPrivateWeakDefAutoLinkage 255 } 256 } 257 258 enum : LLVMVisibility 259 { 260 LLVMDefaultVisibility, 261 LLVMHiddenVisibility, 262 LLVMProtectedVisibility 263 } 264 265 static if (LLVM_Version >= asVersion(3, 5, 0)) 266 { 267 enum : LLVMDLLStorageClass { 268 LLVMDefaultStorageClass = 0, 269 LLVMDLLImportStorageClass = 1, 270 LLVMDLLExportStorageClass = 2 271 } 272 } 273 274 static if (LLVM_Version >= asVersion(7, 0, 0)) 275 { 276 enum : LLVMCallConv { 277 LLVMCCallConv = 0, 278 LLVMFastCallConv = 8, 279 LLVMColdCallConv = 9, 280 LLVMGHCCallConv = 10, 281 LLVMHiPECallConv = 11, 282 LLVMWebKitJSCallConv = 12, 283 LLVMAnyRegCallConv = 13, 284 LLVMPreserveMostCallConv = 14, 285 LLVMPreserveAllCallConv = 15, 286 LLVMSwiftCallConv = 16, 287 LLVMCXXFASTTLSCallConv = 17, 288 LLVMX86StdcallCallConv = 64, 289 LLVMX86FastcallCallConv = 65, 290 LLVMARMAPCSCallConv = 66, 291 LLVMARMAAPCSCallConv = 67, 292 LLVMARMAAPCSVFPCallConv = 68, 293 LLVMMSP430INTRCallConv = 69, 294 LLVMX86ThisCallCallConv = 70, 295 LLVMPTXKernelCallConv = 71, 296 LLVMPTXDeviceCallConv = 72, 297 LLVMSPIRFUNCCallConv = 75, 298 LLVMSPIRKERNELCallConv = 76, 299 LLVMIntelOCLBICallConv = 77, 300 LLVMX8664SysVCallConv = 78, 301 LLVMWin64CallConv = 79, 302 LLVMX86VectorCallCallConv = 80, 303 LLVMHHVMCallConv = 81, 304 LLVMHHVMCCallConv = 82, 305 LLVMX86INTRCallConv = 83, 306 LLVMAVRINTRCallConv = 84, 307 LLVMAVRSIGNALCallConv = 85, 308 LLVMAVRBUILTINCallConv = 86, 309 LLVMAMDGPUVSCallConv = 87, 310 LLVMAMDGPUGSCallConv = 88, 311 LLVMAMDGPUPSCallConv = 89, 312 LLVMAMDGPUCSCallConv = 90, 313 LLVMAMDGPUKERNELCallConv = 91, 314 LLVMX86RegCallCallConv = 92, 315 LLVMAMDGPUHSCallConv = 93, 316 LLVMMSP430BUILTINCallConv = 94, 317 LLVMAMDGPULSCallConv = 95, 318 LLVMAMDGPUESCallConv = 96 319 } 320 } 321 else static if (LLVM_Version >= asVersion(3, 4, 0)) 322 { 323 enum : LLVMCallConv { 324 LLVMCCallConv = 0, 325 LLVMFastCallConv = 8, 326 LLVMColdCallConv = 9, 327 LLVMWebKitJSCallConv = 12, 328 LLVMAnyRegCallConv = 13, 329 LLVMX86StdcallCallConv = 64, 330 LLVMX86FastcallCallConv = 65 331 } 332 } else { 333 enum : LLVMCallConv { 334 LLVMCCallConv = 0, 335 LLVMFastCallConv = 8, 336 LLVMColdCallConv = 9, 337 LLVMX86StdcallCallConv = 64, 338 LLVMX86FastcallCallConv = 65 339 } 340 } 341 342 enum : LLVMIntPredicate 343 { 344 LLVMIntEQ = 32, 345 LLVMIntNE, 346 LLVMIntUGT, 347 LLVMIntUGE, 348 LLVMIntULT, 349 LLVMIntULE, 350 LLVMIntSGT, 351 LLVMIntSGE, 352 LLVMIntSLT, 353 LLVMIntSLE 354 } 355 356 enum : LLVMRealPredicate 357 { 358 LLVMRealPredicateFalse, 359 LLVMRealOEQ, 360 LLVMRealOGT, 361 LLVMRealOGE, 362 LLVMRealOLT, 363 LLVMRealOLE, 364 LLVMRealONE, 365 LLVMRealORD, 366 LLVMRealUNO, 367 LLVMRealUEQ, 368 LLVMRealUGT, 369 LLVMRealUGE, 370 LLVMRealULT, 371 LLVMRealULE, 372 LLVMRealUNE, 373 LLVMRealPredicateTrue 374 } 375 376 enum : LLVMLandingPadClauseTy 377 { 378 LLVMLandingPadCatch, 379 LLVMLandingPadFilter 380 } 381 382 static if (LLVM_Version >= asVersion(3, 3, 0)) 383 { 384 enum : LLVMThreadLocalMode 385 { 386 LLVMNotThreadLocal = 0, 387 LLVMGeneralDynamicTLSModel, 388 LLVMLocalDynamicTLSModel, 389 LLVMInitialExecTLSModel, 390 LLVMLocalExecTLSModel 391 } 392 393 enum : LLVMAtomicOrdering 394 { 395 LLVMAtomicOrderingNotAtomic = 0, 396 LLVMAtomicOrderingUnordered = 1, 397 LLVMAtomicOrderingMonotonic = 2, 398 LLVMAtomicOrderingAcquire = 4, 399 LLVMAtomicOrderingRelease = 5, 400 LLVMAtomicOrderingAcquireRelease = 6, 401 LLVMAtomicOrderingSequentiallyConsistent = 7 402 } 403 404 enum : LLVMAtomicRMWBinOp 405 { 406 LLVMAtomicRMWBinOpXchg, 407 LLVMAtomicRMWBinOpAdd, 408 LLVMAtomicRMWBinOpSub, 409 LLVMAtomicRMWBinOpAnd, 410 LLVMAtomicRMWBinOpNand, 411 LLVMAtomicRMWBinOpOr, 412 LLVMAtomicRMWBinOpXor, 413 LLVMAtomicRMWBinOpMax, 414 LLVMAtomicRMWBinOpMin, 415 LLVMAtomicRMWBinOpUMax, 416 LLVMAtomicRMWBinOpUMin 417 } 418 } 419 static if (LLVM_Version >= asVersion(3, 5, 0)) 420 { 421 enum : LLVMDiagnosticSeverity { 422 LLVMDSError, 423 LLVMDSWarning, 424 LLVMDSRemark, 425 LLVMDSNote 426 } 427 } 428 429 /+ Disassembler +/ 430 431 //TODO: replace const with enum? 432 const 433 { 434 uint LLVMDisassembler_VariantKind_None = 0; 435 uint LLVMDisassembler_VariantKind_ARM_HI16 = 1; 436 uint LLVMDisassembler_VariantKind_ARM_LO16 = 2; 437 static if (LLVM_Version >= asVersion(3, 5, 0)) 438 { 439 uint LLVMDisassembler_VariantKind_ARM64_PAGE = 1; 440 uint LLVMDisassembler_VariantKind_ARM64_PAGEOFF = 2; 441 uint LLVMDisassembler_VariantKind_ARM64_GOTPAGE = 3; 442 uint LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF = 4; 443 uint LLVMDisassembler_VariantKind_ARM64_TLVP = 5; 444 uint LLVMDisassembler_VariantKind_ARM64_TLVOFF = 6; 445 } 446 uint LLVMDisassembler_ReferenceType_InOut_None = 0; 447 uint LLVMDisassembler_ReferenceType_In_Branch = 1; 448 uint LLVMDisassembler_ReferenceType_In_PCrel_Load = 2; 449 static if (LLVM_Version >= asVersion(3, 5, 0)) 450 { 451 ulong LLVMDisassembler_ReferenceType_In_ARM64_ADRP = 0x100000001; 452 ulong LLVMDisassembler_ReferenceType_In_ARM64_ADDXri = 0x100000002; 453 ulong LLVMDisassembler_ReferenceType_In_ARM64_LDRXui = 0x100000003; 454 ulong LLVMDisassembler_ReferenceType_In_ARM64_LDRXl = 0x100000004; 455 ulong LLVMDisassembler_ReferenceType_In_ARM64_ADR = 0x100000005; 456 } 457 uint LLVMDisassembler_ReferenceType_Out_SymbolStub = 1; 458 uint LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr = 2; 459 uint LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr = 3; 460 static if (LLVM_Version >= asVersion(3, 2, 0)) 461 { 462 uint LLVMDisassembler_Option_UseMarkup = 1; 463 } 464 static if (LLVM_Version >= asVersion(3, 3, 0)) 465 { 466 uint LLVMDisassembler_Option_PrintImmHex = 2; 467 uint LLVMDisassembler_Option_AsmPrinterVariant = 4; 468 } 469 static if (LLVM_Version >= asVersion(3, 4, 0)) 470 { 471 uint LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref = 4; 472 uint LLVMDisassembler_ReferenceType_Out_Objc_Message = 5; 473 uint LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref = 6; 474 uint LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref = 7; 475 uint LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref = 8; 476 uint LLVMDisassembler_Option_SetInstrComments = 8; 477 uint LLVMDisassembler_Option_PrintLatency = 16; 478 } 479 static if (LLVM_Version >= asVersion(3, 5, 0)) 480 { 481 uint LLVMDisassembler_ReferenceType_DeMangled_Name = 9; 482 } 483 } 484 485 static if (LLVM_Version < asVersion(3, 3, 0)) 486 { 487 /+ Enhanced Disassembly +/ 488 489 enum : EDAssemblySyntax_t 490 { 491 kEDAssemblySyntaxX86Intel = 0, 492 kEDAssemblySyntaxX86ATT = 1, 493 kEDAssemblySyntaxARMUAL = 2 494 } 495 } 496 497 /+ Linker +/ 498 static if (LLVM_Version >= asVersion(3, 2, 0)) 499 { 500 enum : LLVMLinkerMode 501 { 502 LLVMLinkerDestroySource = 0 503 } 504 505 static if (LLVM_Version < asVersion(3, 7, 0)) 506 { 507 enum : LLVMLinkerMode 508 { 509 LLVMLinkerPreserveSource = 1 510 } 511 } 512 } 513 514 /+ Link Time Optimization +/ 515 516 enum : llvm_lto_status 517 { 518 LLVM_LTO_UNKNOWN, 519 LLVM_LTO_OPT_SUCCESS, 520 LLVM_LTO_READ_SUCCESS, 521 LLVM_LTO_READ_FAILURE, 522 LLVM_LTO_WRITE_FAILURE, 523 LLVM_LTO_NO_TARGET, 524 LLVM_LTO_NO_WORK, 525 LLVM_LTO_MODULE_MERGE_FAILURE, 526 LLVM_LTO_ASM_FAILURE, 527 LLVM_LTO_NULL_OBJECT 528 } 529 530 /+ LTO +/ 531 static if (LLVM_Version >= asVersion(7, 0, 0)) 532 { 533 const uint LTO_API_VERSION = 22; 534 } 535 else static if (LLVM_Version >= asVersion(4, 0, 0)) 536 { 537 const uint LTO_API_VERSION = 21; 538 } 539 else static if (LLVM_Version >= asVersion(3, 9, 0)) 540 { 541 const uint LTO_API_VERSION = 20; 542 } 543 else static if (LLVM_Version >= asVersion(3, 7, 0)) 544 { 545 const uint LTO_API_VERSION = 17; 546 } 547 else static if (LLVM_Version >= asVersion(3, 6, 0)) 548 { 549 const uint LTO_API_VERSION = 11; 550 } 551 else static if (LLVM_Version >= asVersion(3, 5, 0)) 552 { 553 const uint LTO_API_VERSION = 10; 554 } 555 else static if (LLVM_Version >= asVersion(3, 4, 0)) 556 { 557 const uint LTO_API_VERSION = 5; 558 } 559 else 560 { 561 const uint LTO_API_VERSION = 4; 562 } 563 564 enum : lto_symbol_attributes 565 { 566 LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, 567 LTO_SYMBOL_PERMISSIONS_MASK = 0x000000E0, 568 LTO_SYMBOL_PERMISSIONS_CODE = 0x000000A0, 569 LTO_SYMBOL_PERMISSIONS_DATA = 0x000000C0, 570 LTO_SYMBOL_PERMISSIONS_RODATA = 0x00000080, 571 LTO_SYMBOL_DEFINITION_MASK = 0x00000700, 572 LTO_SYMBOL_DEFINITION_REGULAR = 0x00000100, 573 LTO_SYMBOL_DEFINITION_TENTATIVE = 0x00000200, 574 LTO_SYMBOL_DEFINITION_WEAK = 0x00000300, 575 LTO_SYMBOL_DEFINITION_UNDEFINED = 0x00000400, 576 LTO_SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500, 577 LTO_SYMBOL_SCOPE_MASK = 0x00003800, 578 LTO_SYMBOL_SCOPE_INTERNAL = 0x00000800, 579 LTO_SYMBOL_SCOPE_HIDDEN = 0x00001000, 580 LTO_SYMBOL_SCOPE_PROTECTED = 0x00002000, 581 LTO_SYMBOL_SCOPE_DEFAULT = 0x00001800, 582 LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800, 583 } 584 static if (LLVM_Version >= asVersion(3, 7, 0)) 585 { 586 enum : lto_symbol_attributes 587 { 588 LTO_SYMBOL_COMDAT = 0x00004000, 589 LTO_SYMBOL_ALIAS = 0x00008000 590 } 591 } 592 593 enum : lto_debug_model 594 { 595 LTO_DEBUG_MODEL_NONE = 0, 596 LTO_DEBUG_MODEL_DWARF = 1 597 } 598 599 enum : lto_codegen_model 600 { 601 LTO_CODEGEN_PIC_MODEL_STATIC = 0, 602 LTO_CODEGEN_PIC_MODEL_DYNAMIC = 1, 603 LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2, 604 LTO_CODEGEN_PIC_MODEL_DEFAULT = 3 605 } 606 607 static if (LLVM_Version >= asVersion(3, 5, 0)) 608 { 609 enum : lto_codegen_diagnostic_severity_t 610 { 611 LTO_DS_ERROR = 0, 612 LTO_DS_WARNING = 1, 613 LTO_DS_REMARK = 3, 614 LTO_DS_NOTE = 2 615 } 616 } 617 618 /+ Target information +/ 619 620 enum : LLVMByteOrdering 621 { 622 LLVMBigEndian, 623 LLVMLittleEndian 624 } 625 626 /+ Target machine +/ 627 628 enum : LLVMCodeGenOptLevel 629 { 630 LLVMCodeGenLevelNone, 631 LLVMCodeGenLevelLess, 632 LLVMCodeGenLevelDefault, 633 LLVMCodeGenLevelAggressive 634 } 635 636 enum : LLVMRelocMode 637 { 638 LLVMRelocDefault, 639 LLVMRelocStatic, 640 LLVMRelocPIC, 641 LLVMRelocDynamicNoPic 642 } 643 644 enum : LLVMCodeModel 645 { 646 LLVMCodeModelDefault, 647 LLVMCodeModelJITDefault, 648 LLVMCodeModelSmall, 649 LLVMCodeModelKernel, 650 LLVMCodeModelMedium, 651 LLVMCodeModelLarge 652 } 653 654 enum : LLVMCodeGenFileType 655 { 656 LLVMAssemblyFile, 657 LLVMObjectFile 658 } 659 660 /+ Orc +/ 661 662 static if (LLVM_Version >= asVersion(3, 9, 0)) 663 { 664 enum : LLVMOrcErrorCode 665 { 666 LLVMOrcErrSuccess = 0, 667 LLVMOrcErrGeneric, 668 } 669 } 670 671 /+ Debug info flags +/ 672 673 static if (LLVM_Version >= asVersion(7, 0, 0)) 674 { 675 enum : LLVMDIFlags { 676 LLVMDIFlagZero = 0, 677 LLVMDIFlagPrivate = 1, 678 LLVMDIFlagProtected = 2, 679 LLVMDIFlagPublic = 3, 680 LLVMDIFlagFwdDecl = 1 << 2, 681 LLVMDIFlagAppleBlock = 1 << 3, 682 LLVMDIFlagBlockByrefStruct = 1 << 4, 683 LLVMDIFlagVirtual = 1 << 5, 684 LLVMDIFlagArtificial = 1 << 6, 685 LLVMDIFlagExplicit = 1 << 7, 686 LLVMDIFlagPrototyped = 1 << 8, 687 LLVMDIFlagObjcClassComplete = 1 << 9, 688 LLVMDIFlagObjectPointer = 1 << 10, 689 LLVMDIFlagVector = 1 << 11, 690 LLVMDIFlagStaticMember = 1 << 12, 691 LLVMDIFlagLValueReference = 1 << 13, 692 LLVMDIFlagRValueReference = 1 << 14, 693 LLVMDIFlagReserved = 1 << 15, 694 LLVMDIFlagSingleInheritance = 1 << 16, 695 LLVMDIFlagMultipleInheritance = 2 << 16, 696 LLVMDIFlagVirtualInheritance = 3 << 16, 697 LLVMDIFlagIntroducedVirtual = 1 << 18, 698 LLVMDIFlagBitField = 1 << 19, 699 LLVMDIFlagNoReturn = 1 << 20, 700 LLVMDIFlagMainSubprogram = 1 << 21, 701 LLVMDIFlagTypePassByValue = 1 << 22, 702 LLVMDIFlagTypePassByReference = 1 << 23, 703 LLVMDIFlagFixedEnum = 1 << 24, 704 LLVMDIFlagThunk = 1 << 25, 705 LLVMDIFlagTrivial = 1 << 26, 706 LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5), 707 LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected | LLVMDIFlagPublic, 708 LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance | LLVMDIFlagMultipleInheritance | LLVMDIFlagVirtualInheritance 709 } 710 } 711 else static if (LLVM_Version >= asVersion(6, 0, 0)) 712 { 713 enum : LLVMDIFlags { 714 LLVMDIFlagZero = 0, 715 LLVMDIFlagPrivate = 1, 716 LLVMDIFlagProtected = 2, 717 LLVMDIFlagPublic = 3, 718 LLVMDIFlagFwdDecl = 1 << 2, 719 LLVMDIFlagAppleBlock = 1 << 3, 720 LLVMDIFlagBlockByrefStruct = 1 << 4, 721 LLVMDIFlagVirtual = 1 << 5, 722 LLVMDIFlagArtificial = 1 << 6, 723 LLVMDIFlagExplicit = 1 << 7, 724 LLVMDIFlagPrototyped = 1 << 8, 725 LLVMDIFlagObjcClassComplete = 1 << 9, 726 LLVMDIFlagObjectPointer = 1 << 10, 727 LLVMDIFlagVector = 1 << 11, 728 LLVMDIFlagStaticMember = 1 << 12, 729 LLVMDIFlagLValueReference = 1 << 13, 730 LLVMDIFlagRValueReference = 1 << 14, 731 LLVMDIFlagReserved = 1 << 15, 732 LLVMDIFlagSingleInheritance = 1 << 16, 733 LLVMDIFlagMultipleInheritance = 2 << 16, 734 LLVMDIFlagVirtualInheritance = 3 << 16, 735 LLVMDIFlagIntroducedVirtual = 1 << 18, 736 LLVMDIFlagBitField = 1 << 19, 737 LLVMDIFlagNoReturn = 1 << 20, 738 LLVMDIFlagMainSubprogram = 1 << 21, 739 LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5), 740 LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected | 741 LLVMDIFlagPublic, 742 LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance | 743 LLVMDIFlagMultipleInheritance | 744 LLVMDIFlagVirtualInheritance 745 } 746 } 747 748 static if (LLVM_Version >= asVersion(6, 0, 0)) 749 { 750 enum : LLVMDWARFSourceLanguage { 751 LLVMDWARFSourceLanguageC89, 752 LLVMDWARFSourceLanguageC, 753 LLVMDWARFSourceLanguageAda83, 754 LLVMDWARFSourceLanguageC_plus_plus, 755 LLVMDWARFSourceLanguageCobol74, 756 LLVMDWARFSourceLanguageCobol85, 757 LLVMDWARFSourceLanguageFortran77, 758 LLVMDWARFSourceLanguageFortran90, 759 LLVMDWARFSourceLanguagePascal83, 760 LLVMDWARFSourceLanguageModula2, 761 // New in DWARF v3: 762 LLVMDWARFSourceLanguageJava, 763 LLVMDWARFSourceLanguageC99, 764 LLVMDWARFSourceLanguageAda95, 765 LLVMDWARFSourceLanguageFortran95, 766 LLVMDWARFSourceLanguagePLI, 767 LLVMDWARFSourceLanguageObjC, 768 LLVMDWARFSourceLanguageObjC_plus_plus, 769 LLVMDWARFSourceLanguageUPC, 770 LLVMDWARFSourceLanguageD, 771 // New in DWARF v4: 772 LLVMDWARFSourceLanguagePython, 773 // New in DWARF v5: 774 LLVMDWARFSourceLanguageOpenCL, 775 LLVMDWARFSourceLanguageGo, 776 LLVMDWARFSourceLanguageModula3, 777 LLVMDWARFSourceLanguageHaskell, 778 LLVMDWARFSourceLanguageC_plus_plus_03, 779 LLVMDWARFSourceLanguageC_plus_plus_11, 780 LLVMDWARFSourceLanguageOCaml, 781 LLVMDWARFSourceLanguageRust, 782 LLVMDWARFSourceLanguageC11, 783 LLVMDWARFSourceLanguageSwift, 784 LLVMDWARFSourceLanguageJulia, 785 LLVMDWARFSourceLanguageDylan, 786 LLVMDWARFSourceLanguageC_plus_plus_14, 787 LLVMDWARFSourceLanguageFortran03, 788 LLVMDWARFSourceLanguageFortran08, 789 LLVMDWARFSourceLanguageRenderScript, 790 LLVMDWARFSourceLanguageBLISS, 791 // Vendor extensions: 792 LLVMDWARFSourceLanguageMips_Assembler, 793 LLVMDWARFSourceLanguageGOOGLE_RenderScript, 794 LLVMDWARFSourceLanguageBORLAND_Delphi 795 } 796 } 797 798 static if (LLVM_Version >= asVersion(6, 0, 0)) 799 { 800 enum : LLVMDWARFEmissionKind { 801 LLVMDWARFEmissionNone = 0, 802 LLVMDWARFEmissionFull, 803 LLVMDWARFEmissionLineTablesOnly 804 } 805 806 } 807 808 809 static if (LLVM_Version >= asVersion(7, 0, 0)) 810 { 811 enum : LLVMComdatSelectionKind { 812 LLVMAnyComdatSelectionKind, 813 LLVMExactMatchComdatSelectionKind, 814 LLVMLargestComdatSelectionKind, 815 LLVMNoDuplicatesComdatSelectionKind, 816 LLVMSameSizeComdatSelectionKind 817 } 818 } 819 820 static if (LLVM_Version >= asVersion(7, 0, 0)) 821 { 822 enum : LLVMUnnamedAddr { 823 LLVMNoUnnamedAddr, 824 LLVMLocalUnnamedAddr, 825 LLVMGlobalUnnamedAddr 826 } 827 } 828 829 830 static if (LLVM_Version >= asVersion(7, 0, 0)) 831 { 832 enum : LLVMInlineAsmDialect { 833 LLVMInlineAsmDialectATT, 834 LLVMInlineAsmDialectIntel 835 } 836 } 837 838 static if (LLVM_Version >= asVersion(7, 0, 0)) 839 { 840 enum : LLVMModuleFlagBehavior { 841 LLVMModuleFlagBehaviorError, 842 LLVMModuleFlagBehaviorWarning, 843 LLVMModuleFlagBehaviorRequire, 844 LLVMModuleFlagBehaviorOverride, 845 LLVMModuleFlagBehaviorAppend, 846 LLVMModuleFlagBehaviorAppendUnique, 847 } 848 }