1 module llvm.functions.link; 2 3 import std.array : array; 4 import std.algorithm.iteration : map, joiner; 5 import std.range : chain; 6 7 import llvm.config; 8 import llvm.types; 9 import core.stdc.stdint; 10 11 private nothrow auto orEmpty(T)(T v) 12 { 13 return v? v : ""; 14 } 15 16 __gshared extern(System) nothrow: 17 18 /+ Analysis +/ 19 20 LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action, char** OutMessage); 21 LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action); 22 void LLVMViewFunctionCFG(LLVMValueRef Fn); 23 void LLVMViewFunctionCFGOnly(LLVMValueRef Fn); 24 25 /+ Bit Reader +/ 26 27 static if (LLVM_Version < asVersion(3, 9, 0)) { 28 LLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, char** OutMessage); 29 } 30 31 static if (LLVM_Version >= asVersion(3, 8, 0)) { 32 LLVMBool LLVMParseBitcode2(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule); 33 } 34 35 static if (LLVM_Version < asVersion(3, 9, 0)) { 36 LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, char** OutMessage); 37 } 38 39 static if (LLVM_Version >= asVersion(3, 8, 0)) { 40 LLVMBool LLVMParseBitcodeInContext2(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule); 41 } 42 43 static if (LLVM_Version < asVersion(3, 9, 0)) { 44 LLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM, char** OutMessage); 45 } 46 47 static if (LLVM_Version >= asVersion(3, 8, 0)) { 48 LLVMBool LLVMGetBitcodeModuleInContext2(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM); 49 } 50 51 static if (LLVM_Version < asVersion(3, 9, 0)) { 52 LLVMBool LLVMGetBitcodeModule(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM, char** OutMessage); 53 } 54 55 static if (LLVM_Version >= asVersion(3, 8, 0)) { 56 LLVMBool LLVMGetBitcodeModule2(LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM); 57 } 58 59 static if (LLVM_Version < asVersion(3, 8, 0)) { 60 LLVMBool LLVMGetBitcodeModuleProviderInContext(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, char** OutMessage); 61 } 62 63 static if (LLVM_Version < asVersion(3, 8, 0)) { 64 LLVMBool LLVMGetBitcodeModuleProvider(LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef* OutMP, char** OutMessage); 65 } 66 67 /+ Bit Writer +/ 68 69 int LLVMWriteBitcodeToFile(LLVMModuleRef M, const(char)* Path); 70 int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose, int Unbuffered); 71 int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int Handle); 72 static if (LLVM_Version >= asVersion(3, 6, 0)) { 73 LLVMMemoryBufferRef LLVMWriteBitcodeToMemoryBuffer(LLVMModuleRef M); 74 } 75 76 /+ Transforms +/ 77 78 /++ Interprocedural transformations ++/ 79 80 void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM); 81 void LLVMAddConstantMergePass(LLVMPassManagerRef PM); 82 static if (LLVM_Version >= asVersion(10, 0, 0)) { 83 void LLVMAddMergeFunctionsPass(LLVMPassManagerRef PM); 84 } 85 static if (LLVM_Version >= asVersion(6, 0, 0)) { 86 void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM); 87 } 88 void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM); 89 void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM); 90 void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM); 91 void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM); 92 void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM); 93 void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM); 94 void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM); 95 void LLVMAddPruneEHPass(LLVMPassManagerRef PM); 96 void LLVMAddIPSCCPPass(LLVMPassManagerRef PM); 97 void LLVMAddInternalizePass(LLVMPassManagerRef, uint AllButMain); 98 static if (LLVM_Version >= asVersion(10, 0, 0)) { 99 void LLVMAddInternalizePassWithMustPreservePredicate( LLVMPassManagerRef PM, void* Context, MustPreserveCallback MustPreserve); 100 } 101 void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM); 102 void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM); 103 104 /++ Pass manager builder ++/ 105 106 LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(); 107 void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); 108 void LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, uint OptLevel); 109 void LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, uint SizeLevel); 110 void LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, LLVMBool Value); 111 void LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, LLVMBool Value); 112 void LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, LLVMBool Value); 113 void LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, uint Threshold); 114 void LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM); 115 void LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM); 116 void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner); 117 118 /++ Scalar transformations ++/ 119 120 void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); 121 static if (LLVM_Version >= asVersion(10, 0, 0)) { 122 void LLVMAddDCEPass(LLVMPassManagerRef PM); 123 } 124 static if (LLVM_Version >= asVersion(7, 0, 0) && LLVM_Version < asVersion(8, 0, 0)) { 125 void LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM); 126 } 127 static if (LLVM_Version >= asVersion(3, 7, 0)) { 128 void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM); 129 } 130 static if (LLVM_Version >= asVersion(3, 6, 0)) { 131 void LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM); 132 } 133 void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM); 134 static if (LLVM_Version >= asVersion(5, 0, 0) && LLVM_Version < asVersion(6, 0, 0)) { 135 void LLVMAddLateCFGSimplificationPass(LLVMPassManagerRef PM); 136 } 137 void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM); 138 static if (LLVM_Version >= asVersion(3, 5, 0)) { 139 void LLVMAddScalarizerPass(LLVMPassManagerRef PM); 140 } 141 static if (LLVM_Version >= asVersion(3, 5, 0)) { 142 void LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM); 143 } 144 void LLVMAddGVNPass(LLVMPassManagerRef PM); 145 static if (LLVM_Version >= asVersion(4, 0, 0)) { 146 void LLVMAddNewGVNPass(LLVMPassManagerRef PM); 147 } 148 void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM); 149 void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); 150 void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM); 151 void LLVMAddLICMPass(LLVMPassManagerRef PM); 152 void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM); 153 void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM); 154 void LLVMAddLoopRotatePass(LLVMPassManagerRef PM); 155 static if (LLVM_Version >= asVersion(3, 4, 0)) { 156 void LLVMAddLoopRerollPass(LLVMPassManagerRef PM); 157 } 158 void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); 159 void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); 160 static if (LLVM_Version >= asVersion(8, 0, 0)) { 161 void LLVMAddLowerAtomicPass(LLVMPassManagerRef PM); 162 } 163 void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); 164 static if (LLVM_Version >= asVersion(3, 4, 0)) { 165 void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM); 166 } 167 static if (LLVM_Version >= asVersion(3, 6, 0)) { 168 void LLVMAddLowerSwitchPass(LLVMPassManagerRef PM); 169 } 170 void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM); 171 static if (LLVM_Version >= asVersion(9, 0, 0)) { 172 void LLVMAddAddDiscriminatorsPass(LLVMPassManagerRef PM); 173 } 174 void LLVMAddReassociatePass(LLVMPassManagerRef PM); 175 void LLVMAddSCCPPass(LLVMPassManagerRef PM); 176 void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); 177 void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM); 178 void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, int Threshold); 179 void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); 180 void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); 181 void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); 182 void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); 183 void LLVMAddVerifierPass(LLVMPassManagerRef PM); 184 void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM); 185 void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM); 186 static if (LLVM_Version >= asVersion(4, 0, 0)) { 187 void LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM); 188 } 189 void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM); 190 static if (LLVM_Version >= asVersion(10, 0, 0)) { 191 void LLVMAddLowerConstantIntrinsicsPass(LLVMPassManagerRef PM); 192 } 193 void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM); 194 static if (LLVM_Version >= asVersion(3, 6, 0)) { 195 void LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM); 196 } 197 void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); 198 static if (LLVM_Version >= asVersion(8, 0, 0)) { 199 void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM); 200 } 201 202 /++ Vectorization transformations ++/ 203 204 static if (LLVM_Version < asVersion(7, 0, 0)) { 205 void LLVMAddBBVectorizePass(LLVMPassManagerRef PM); 206 } 207 static if (LLVM_Version >= asVersion(3, 2, 0)) { 208 void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM); 209 } 210 211 /+ Core +/ 212 213 static if (LLVM_Version >= asVersion(3, 3, 0)) { 214 void LLVMShutdown(); 215 } 216 static if (LLVM_Version >= asVersion(3, 4, 0)) { 217 char* LLVMCreateMessage(const(char)* Message); 218 } 219 void LLVMDisposeMessage(char* Message); 220 static if (LLVM_Version >= asVersion(3, 4, 0)) { 221 void LLVMInstallFatalErrorHandler(LLVMFatalErrorHandler Handler); 222 } 223 static if (LLVM_Version >= asVersion(3, 4, 0)) { 224 void LLVMResetFatalErrorHandler(); 225 } 226 static if (LLVM_Version >= asVersion(3, 4, 0)) { 227 void LLVMEnablePrettyStackTrace(); 228 } 229 230 /++ Contexts ++/ 231 232 LLVMContextRef LLVMContextCreate(); 233 LLVMContextRef LLVMGetGlobalContext(); 234 void LLVMContextDispose(LLVMContextRef C); 235 uint LLVMGetMDKindIDInContext(LLVMContextRef C, const(char)* Name, uint SLen); 236 uint LLVMGetMDKindID(const(char)* Name, uint SLen); 237 238 239 static if (LLVM_Version >= asVersion(3, 9, 0)) { 240 uint LLVMGetEnumAttributeKindForName(const(char)*Name, size_t SLen); 241 } 242 static if (LLVM_Version >= asVersion(3, 9, 0)) { 243 uint LLVMGetLastEnumAttributeKind(); 244 } 245 static if (LLVM_Version >= asVersion(3, 9, 0)) { 246 LLVMAttributeRef LLVMCreateEnumAttribute(LLVMContextRef C, uint KindID, ulong Val); 247 } 248 static if (LLVM_Version >= asVersion(3, 9, 0)) { 249 uint LLVMGetEnumAttributeKind(LLVMAttributeRef A); 250 } 251 static if (LLVM_Version >= asVersion(3, 9, 0)) { 252 ulong LLVMGetEnumAttributeValue(LLVMAttributeRef A); 253 } 254 static if (LLVM_Version >= asVersion(3, 9, 0)) { 255 LLVMAttributeRef LLVMCreateStringAttribute(LLVMContextRef C, const(char)*K, uint KLength, const(char)*V, uint VLength); 256 } 257 static if (LLVM_Version >= asVersion(3, 9, 0)) { 258 const(char)* LLVMGetStringAttributeKind(LLVMAttributeRef A, uint *Length); 259 } 260 static if (LLVM_Version >= asVersion(3, 9, 0)) { 261 const(char)* LLVMGetStringAttributeValue(LLVMAttributeRef A, uint *Length); 262 } 263 static if (LLVM_Version >= asVersion(3, 9, 0)) { 264 LLVMBool LLVMIsEnumAttribute(LLVMAttributeRef A); 265 } 266 static if (LLVM_Version >= asVersion(3, 9, 0)) { 267 LLVMBool LLVMIsStringAttribute(LLVMAttributeRef A); 268 } 269 270 static if (LLVM_Version >= asVersion(3, 5, 0)) { 271 void LLVMContextSetDiagnosticHandler (LLVMContextRef C, LLVMDiagnosticHandler Handler, void *DiagnosticContext); 272 } 273 274 static if (LLVM_Version >= asVersion(3, 9, 0)) { 275 LLVMDiagnosticHandler LLVMContextGetDiagnosticHandler(LLVMContextRef C); 276 } 277 static if (LLVM_Version >= asVersion(3, 9, 0)) { 278 void* LLVMContextGetDiagnosticContext(LLVMContextRef C); 279 } 280 281 static if (LLVM_Version >= asVersion(3, 5, 0)) { 282 char* LLVMGetDiagInfoDescription(LLVMDiagnosticInfoRef DI); 283 } 284 285 static if (LLVM_Version >= asVersion(3, 5, 0)) { 286 LLVMDiagnosticSeverity LLVMGetDiagInfoSeverity(LLVMDiagnosticInfoRef DI); 287 } 288 static if (LLVM_Version >= asVersion(3, 5, 0)) { 289 void LLVMContextSetYieldCallback(LLVMContextRef C, LLVMYieldCallback Callback, void *OpaqueHandle); 290 } 291 292 static if (LLVM_Version >= asVersion(8, 0, 0)) { 293 LLVMBool LLVMContextShouldDiscardValueNames(LLVMContextRef C); 294 void LLVMContextSetDiscardValueNames(LLVMContextRef C, LLVMBool Discard); 295 } 296 297 /++ Modules ++/ 298 299 LLVMModuleRef LLVMModuleCreateWithName(const(char)* ModuleID); 300 LLVMModuleRef LLVMModuleCreateWithNameInContext(const(char)* ModuleID, LLVMContextRef C); 301 static if (LLVM_Version >= asVersion(3, 6, 0)) { 302 LLVMModuleRef LLVMCloneModule(LLVMModuleRef M); 303 } 304 void LLVMDisposeModule(LLVMModuleRef M); 305 306 static if (LLVM_Version >= asVersion(3, 9, 0)) { 307 const(char)* LLVMGetModuleIdentifier(LLVMModuleRef M, size_t *Len); 308 } 309 static if (LLVM_Version >= asVersion(3, 9, 0)) { 310 void LLVMSetModuleIdentifier(LLVMModuleRef M, const(char)* Ident, size_t Len); 311 } 312 313 const(char)* LLVMGetDataLayout(LLVMModuleRef M); 314 315 static if (LLVM_Version >= asVersion(3, 9, 0)) { 316 const(char)* LLVMGetDataLayoutStr(LLVMModuleRef M); 317 } 318 319 void LLVMSetDataLayout(LLVMModuleRef M, const(char)* Triple); 320 const(char)* LLVMGetTarget(LLVMModuleRef M); 321 void LLVMSetTarget(LLVMModuleRef M, const(char)* Triple); 322 void LLVMDumpModule(LLVMModuleRef M); 323 static if (LLVM_Version >= asVersion(3, 2, 0)) { 324 LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const(char)* Filename, char** ErrorMessage); 325 } 326 static if (LLVM_Version >= asVersion(3, 4, 0)) { 327 char* LLVMPrintModuleToString(LLVMModuleRef M); 328 } 329 330 static if (LLVM_Version >= asVersion(7, 0, 0)) { 331 void LLVMSetModuleInlineAsm2(LLVMModuleRef M, const(char)* Asm, size_t Len); 332 } 333 334 static if (LLVM_Version >= asVersion(7, 0, 0)) { 335 deprecated("Use LLVMSetModuleInlineAsm2 instead.") void LLVMSetModuleInlineAsm(LLVMModuleRef M, const(char)* Asm); 336 } else { 337 void LLVMSetModuleInlineAsm(LLVMModuleRef M, const(char)* Asm); 338 } 339 340 LLVMContextRef LLVMGetModuleContext(LLVMModuleRef M); 341 LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const(char)* Name); 342 static if (LLVM_Version >= asVersion(8, 0, 0)) { 343 LLVMNamedMDNodeRef LLVMGetFirstNamedMetadata(LLVMModuleRef M); 344 345 LLVMNamedMDNodeRef LLVMGetLastNamedMetadata(LLVMModuleRef M); 346 347 LLVMNamedMDNodeRef LLVMGetNextNamedMetadata(LLVMNamedMDNodeRef NamedMDNode); 348 349 LLVMNamedMDNodeRef LLVMGetPreviousNamedMetadata(LLVMNamedMDNodeRef NamedMDNode); 350 351 LLVMNamedMDNodeRef LLVMGetNamedMetadata(LLVMModuleRef M, 352 const(char)* Name, size_t NameLen); 353 354 LLVMNamedMDNodeRef LLVMGetOrInsertNamedMetadata(LLVMModuleRef M, 355 const(char)* Name, 356 size_t NameLen); 357 358 const(char)* LLVMGetNamedMetadataName(LLVMNamedMDNodeRef NamedMD, 359 size_t* NameLen); 360 } 361 uint LLVMGetNamedMetadataNumOperands(LLVMModuleRef M, const(char)* name); 362 void LLVMGetNamedMetadataOperands(LLVMModuleRef M, const(char)* name, LLVMValueRef *Dest); 363 void LLVMAddNamedMetadataOperand(LLVMModuleRef M, const(char)* name, LLVMValueRef Val); 364 static if (LLVM_Version >= asVersion(8, 0, 0)) { 365 const(char)* LLVMGetDebugLocDirectory(LLVMValueRef Val, uint* Length); 366 367 const(char)* LLVMGetDebugLocFilename(LLVMValueRef Val, uint* Length); 368 369 uint LLVMGetDebugLocLine(LLVMValueRef Val); 370 371 uint LLVMGetDebugLocColumn(LLVMValueRef Val); 372 } 373 LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const(char)* Name, LLVMTypeRef FunctionTy); 374 LLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const(char)* Name); 375 LLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M); 376 LLVMValueRef LLVMGetLastFunction(LLVMModuleRef M); 377 LLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn); 378 LLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn); 379 380 /++ Types ++/ 381 382 LLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty); 383 LLVMBool LLVMTypeIsSized(LLVMTypeRef Ty); 384 LLVMContextRef LLVMGetTypeContext(LLVMTypeRef Ty); 385 static if (LLVM_Version >= asVersion(3, 4, 0)) { 386 void LLVMDumpType(LLVMTypeRef Val); 387 } 388 static if (LLVM_Version >= asVersion(3, 4, 0)) { 389 char* LLVMPrintTypeToString(LLVMTypeRef Val); 390 } 391 392 /+++ Integer Types +++/ 393 394 LLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef C); 395 LLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef C); 396 LLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef C); 397 LLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C); 398 LLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C); 399 static if (LLVM_Version >= asVersion(3, 8, 0)) { 400 LLVMTypeRef LLVMInt128TypeInContext(LLVMContextRef C); 401 } 402 LLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, uint NumBits); 403 LLVMTypeRef LLVMInt1Type(); 404 LLVMTypeRef LLVMInt8Type(); 405 LLVMTypeRef LLVMInt16Type(); 406 LLVMTypeRef LLVMInt32Type(); 407 LLVMTypeRef LLVMInt64Type(); 408 static if (LLVM_Version >= asVersion(3, 8, 0)) { 409 LLVMTypeRef LLVMInt128Type(); 410 } 411 LLVMTypeRef LLVMIntType(uint NumBits); 412 uint LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy); 413 414 /+++ Floating Point Types +++/ 415 416 LLVMTypeRef LLVMHalfTypeInContext(LLVMContextRef C); 417 LLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef C); 418 LLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef C); 419 LLVMTypeRef LLVMX86FP80TypeInContext(LLVMContextRef C); 420 LLVMTypeRef LLVMFP128TypeInContext(LLVMContextRef C); 421 LLVMTypeRef LLVMPPCFP128TypeInContext(LLVMContextRef C); 422 LLVMTypeRef LLVMHalfType(); 423 LLVMTypeRef LLVMFloatType(); 424 LLVMTypeRef LLVMDoubleType(); 425 LLVMTypeRef LLVMX86FP80Type(); 426 LLVMTypeRef LLVMFP128Type(); 427 LLVMTypeRef LLVMPPCFP128Type(); 428 429 /+++ Function Types +++/ 430 431 LLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, uint ParamCount, LLVMBool IsVarArg); 432 LLVMBool LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy); 433 LLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy); 434 uint LLVMCountParamTypes(LLVMTypeRef FunctionTy); 435 void LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef* Dest); 436 437 /+++ Structure Types +++/ 438 439 LLVMTypeRef LLVMStructTypeInContext(LLVMContextRef C, LLVMTypeRef* ElementTypes, uint ElementCount, LLVMBool Packed); 440 LLVMTypeRef LLVMStructType(LLVMTypeRef* ElementTypes, uint ElementCount, LLVMBool Packed); 441 LLVMTypeRef LLVMStructCreateNamed(LLVMContextRef C, const(char)* Name); 442 const(char)* LLVMGetStructName(LLVMTypeRef Ty); 443 void LLVMStructSetBody(LLVMTypeRef StructTy, LLVMTypeRef* ElementTypes, uint ElementCount, LLVMBool Packed); 444 uint LLVMCountStructElementTypes(LLVMTypeRef StructTy); 445 void LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef* Dest); 446 static if (LLVM_Version >= asVersion(3, 7, 0)) { 447 LLVMTypeRef LLVMStructGetTypeAtIndex(LLVMTypeRef StructTy, uint i); 448 } 449 LLVMBool LLVMIsPackedStruct(LLVMTypeRef StructTy); 450 LLVMBool LLVMIsOpaqueStruct(LLVMTypeRef StructTy); 451 static if (LLVM_Version >= asVersion(8, 0, 0)) { 452 LLVMBool LLVMIsLiteralStruct(LLVMTypeRef StructTy); 453 } 454 455 /+++ Sequential Types +++/ 456 457 LLVMTypeRef LLVMGetElementType(LLVMTypeRef Ty); 458 static if (LLVM_Version >= asVersion(5,0,0)) { 459 void LLVMGetSubtypes(LLVMTypeRef Tp, LLVMTypeRef* Arr); 460 } 461 static if (LLVM_Version >= asVersion(5,0,0)) { 462 uint LLVMGetNumContainedTypes(LLVMTypeRef Tp); 463 } 464 LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, uint ElementCount); 465 uint LLVMGetArrayLength(LLVMTypeRef ArrayTy); 466 LLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, uint AddressSpace); 467 uint LLVMGetPointerAddressSpace(LLVMTypeRef PointerTy); 468 LLVMTypeRef LLVMVectorType(LLVMTypeRef ElementType, uint ElementCount); 469 uint LLVMGetVectorSize(LLVMTypeRef VectorTy); 470 471 /+++ Other Types +++/ 472 473 LLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C); 474 LLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C); 475 LLVMTypeRef LLVMX86MMXTypeInContext(LLVMContextRef C); 476 static if (LLVM_Version >= asVersion(6, 0, 0)) { 477 LLVMTypeRef LLVMTokenTypeInContext(LLVMContextRef C); 478 } 479 static if (LLVM_Version >= asVersion(6, 0, 0)) { 480 LLVMTypeRef LLVMMetadataTypeInContext(LLVMContextRef C); 481 } 482 LLVMTypeRef LLVMVoidType(); 483 LLVMTypeRef LLVMLabelType(); 484 LLVMTypeRef LLVMX86MMXType(); 485 486 /++ Values ++/ 487 488 /+++ General APIs +++/ 489 490 LLVMTypeRef LLVMTypeOf(LLVMValueRef Val); 491 static if (LLVM_Version >= asVersion(3, 9, 0)) { 492 LLVMValueKind LLVMGetValueKind(LLVMValueRef Val); 493 } 494 495 static if (LLVM_Version >= asVersion(7, 0, 0)) { 496 const(char)* LLVMGetValueName2(LLVMValueRef Val, size_t* Length); 497 } 498 499 static if (LLVM_Version >= asVersion(7, 0, 0)) { 500 deprecated("Use LLVMGetValueName2 instead.") const(char)* LLVMGetValueName(LLVMValueRef Val); 501 } else { 502 const(char)* LLVMGetValueName(LLVMValueRef Val); 503 } 504 505 static if (LLVM_Version >= asVersion(7, 0, 0)) { 506 void LLVMSetValueName2(LLVMValueRef Val, const(char*) Name, size_t NameLen); 507 } 508 509 static if (LLVM_Version >= asVersion(7, 0, 0)) { 510 deprecated("Use LLVMSetValueName2 instead.")void LLVMSetValueName(LLVMValueRef Val, const(char)* Name); 511 } else { 512 void LLVMSetValueName(LLVMValueRef Val, const(char)* Name); 513 } 514 515 void LLVMDumpValue(LLVMValueRef Val); 516 static if (LLVM_Version >= asVersion(3, 4, 0)) { 517 char* LLVMPrintValueToString(LLVMValueRef Val); 518 } 519 void LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal); 520 LLVMBool LLVMIsConstant(LLVMValueRef Val); 521 LLVMBool LLVMIsUndef(LLVMValueRef Val); 522 523 LLVMValueRef LLVMIsAAllocaInst(LLVMValueRef Val); 524 LLVMValueRef LLVMIsAArgument(LLVMValueRef Val); 525 LLVMValueRef LLVMIsABasicBlock(LLVMValueRef Val); 526 static if (LLVM_Version >= asVersion(10, 0, 0)) { 527 LLVMValueRef LLVMIsAUnaryOperator(LLVMValueRef Val); 528 } 529 LLVMValueRef LLVMIsABinaryOperator(LLVMValueRef Val); 530 LLVMValueRef LLVMIsABitCastInst(LLVMValueRef Val); 531 LLVMValueRef LLVMIsABlockAddress(LLVMValueRef Val); 532 LLVMValueRef LLVMIsABranchInst(LLVMValueRef Val); 533 LLVMValueRef LLVMIsACallInst(LLVMValueRef Val); 534 LLVMValueRef LLVMIsACastInst(LLVMValueRef Val); 535 static if (LLVM_Version >= asVersion(3, 4, 0)) { 536 LLVMValueRef LLVMIsAAddrSpaceCastInst(LLVMValueRef Val); 537 } 538 LLVMValueRef LLVMIsACmpInst(LLVMValueRef Val); 539 LLVMValueRef LLVMIsAConstantAggregateZero(LLVMValueRef Val); 540 LLVMValueRef LLVMIsAConstantArray(LLVMValueRef Val); 541 static if (LLVM_Version >= asVersion(3, 4, 0)) { 542 LLVMValueRef LLVMIsAConstantDataSequential(LLVMValueRef Val); 543 } 544 static if (LLVM_Version >= asVersion(3, 4, 0)) { 545 LLVMValueRef LLVMIsAConstantDataArray(LLVMValueRef Val); 546 } 547 static if (LLVM_Version >= asVersion(3, 4, 0)) { 548 LLVMValueRef LLVMIsAConstantDataVector(LLVMValueRef Val); 549 } 550 551 LLVMValueRef LLVMIsAConstantExpr(LLVMValueRef Val); 552 LLVMValueRef LLVMIsAConstantFP(LLVMValueRef Val); 553 LLVMValueRef LLVMIsAConstantInt(LLVMValueRef Val); 554 LLVMValueRef LLVMIsAConstant(LLVMValueRef Val); 555 LLVMValueRef LLVMIsAConstantPointerNull(LLVMValueRef Val); 556 LLVMValueRef LLVMIsAConstantStruct(LLVMValueRef Val); 557 static if (LLVM_Version >= asVersion(3, 8, 0)) { 558 LLVMValueRef LLVMIsAConstantTokenNone(LLVMValueRef Val); 559 } 560 LLVMValueRef LLVMIsAConstantVector(LLVMValueRef Val); 561 static if (LLVM_Version >= asVersion(8, 0, 0)) { 562 LLVMValueRef LLVMIsADbgVariableIntrinsic(LLVMValueRef Val); 563 } 564 LLVMValueRef LLVMIsADbgDeclareInst(LLVMValueRef Val); 565 static if (LLVM_Version >= asVersion(8, 0, 0)) { 566 LLVMValueRef LLVMIsADbgLabelInst(LLVMValueRef Val); 567 } 568 LLVMValueRef LLVMIsADbgInfoIntrinsic(LLVMValueRef Val); 569 LLVMValueRef LLVMIsAExtractElementInst(LLVMValueRef Val); 570 LLVMValueRef LLVMIsAExtractValueInst(LLVMValueRef Val); 571 LLVMValueRef LLVMIsAFCmpInst(LLVMValueRef Val); 572 LLVMValueRef LLVMIsAFPExtInst(LLVMValueRef Val); 573 LLVMValueRef LLVMIsAFPToSIInst(LLVMValueRef Val); 574 LLVMValueRef LLVMIsAFPToUIInst(LLVMValueRef Val); 575 LLVMValueRef LLVMIsAFPTruncInst(LLVMValueRef Val); 576 LLVMValueRef LLVMIsAGetElementPtrInst(LLVMValueRef Val); 577 LLVMValueRef LLVMIsAGlobalValue(LLVMValueRef Val); 578 LLVMValueRef LLVMIsAGlobalAlias(LLVMValueRef Val); 579 static if (LLVM_Version >= asVersion(8, 0, 0)) { 580 LLVMValueRef LLVMIsAGlobalIFunc(LLVMValueRef Val); 581 } 582 LLVMValueRef LLVMIsAGlobalObject(LLVMValueRef Val); 583 LLVMValueRef LLVMIsAFunction(LLVMValueRef Val); 584 LLVMValueRef LLVMIsAGlobalVariable(LLVMValueRef Val); 585 LLVMValueRef LLVMIsAICmpInst(LLVMValueRef Val); 586 LLVMValueRef LLVMIsAIndirectBrInst(LLVMValueRef Val); 587 LLVMValueRef LLVMIsAInlineAsm(LLVMValueRef Val); 588 LLVMValueRef LLVMIsAInsertElementInst(LLVMValueRef Val); 589 LLVMValueRef LLVMIsAInsertValueInst(LLVMValueRef Val); 590 LLVMValueRef LLVMIsAInstruction(LLVMValueRef Val); 591 LLVMValueRef LLVMIsAIntrinsicInst(LLVMValueRef Val); 592 LLVMValueRef LLVMIsAIntToPtrInst(LLVMValueRef Val); 593 LLVMValueRef LLVMIsAInvokeInst(LLVMValueRef Val); 594 LLVMValueRef LLVMIsALandingPadInst(LLVMValueRef Val); 595 LLVMValueRef LLVMIsALoadInst(LLVMValueRef Val); 596 LLVMValueRef LLVMIsAMDNode(LLVMValueRef Val); 597 LLVMValueRef LLVMIsAMDString(LLVMValueRef Val); 598 LLVMValueRef LLVMIsAMemCpyInst(LLVMValueRef Val); 599 LLVMValueRef LLVMIsAMemIntrinsic(LLVMValueRef Val); 600 LLVMValueRef LLVMIsAMemMoveInst(LLVMValueRef Val); 601 LLVMValueRef LLVMIsAMemSetInst(LLVMValueRef Val); 602 LLVMValueRef LLVMIsAPHINode(LLVMValueRef Val); 603 LLVMValueRef LLVMIsAPtrToIntInst(LLVMValueRef Val); 604 LLVMValueRef LLVMIsAResumeInst(LLVMValueRef Val); 605 static if (LLVM_Version >= asVersion(3, 8, 0)) { 606 LLVMValueRef LLVMIsACleanupReturnInst(LLVMValueRef Val); 607 } 608 static if (LLVM_Version >= asVersion(3, 8, 0)) { 609 LLVMValueRef LLVMIsACatchReturnInst(LLVMValueRef Val); 610 } 611 static if (LLVM_Version >= asVersion(10, 0, 0)) { 612 LLVMValueRef LLVMIsACatchSwitchInst(LLVMValueRef Val); 613 LLVMValueRef LLVMIsACallBrInst(LLVMValueRef Val); 614 } 615 static if (LLVM_Version >= asVersion(3, 8, 0)) { 616 LLVMValueRef LLVMIsAFuncletPadInst(LLVMValueRef Val); 617 } 618 static if (LLVM_Version >= asVersion(3, 8, 0)) { 619 LLVMValueRef LLVMIsACatchPadInst(LLVMValueRef Val); 620 } 621 static if (LLVM_Version >= asVersion(3, 8, 0)) { 622 LLVMValueRef LLVMIsACleanupPadInst(LLVMValueRef Val); 623 } 624 LLVMValueRef LLVMIsAReturnInst(LLVMValueRef Val); 625 LLVMValueRef LLVMIsASelectInst(LLVMValueRef Val); 626 LLVMValueRef LLVMIsASExtInst(LLVMValueRef Val); 627 LLVMValueRef LLVMIsAShuffleVectorInst(LLVMValueRef Val); 628 LLVMValueRef LLVMIsASIToFPInst(LLVMValueRef Val); 629 LLVMValueRef LLVMIsAStoreInst(LLVMValueRef Val); 630 LLVMValueRef LLVMIsASwitchInst(LLVMValueRef Val); 631 LLVMValueRef LLVMIsATerminatorInst(LLVMValueRef Val); 632 LLVMValueRef LLVMIsATruncInst(LLVMValueRef Val); 633 LLVMValueRef LLVMIsAUIToFPInst(LLVMValueRef Val); 634 LLVMValueRef LLVMIsAUnaryInstruction(LLVMValueRef Val); 635 LLVMValueRef LLVMIsAUndefValue(LLVMValueRef Val); 636 LLVMValueRef LLVMIsAUnreachableInst(LLVMValueRef Val); 637 LLVMValueRef LLVMIsAUser(LLVMValueRef Val); 638 LLVMValueRef LLVMIsAVAArgInst(LLVMValueRef Val); 639 static if (LLVM_Version >= asVersion(10, 0, 0)) { 640 LLVMValueRef LLVMIsAFreezeInst(LLVMValueRef Val); 641 LLVMValueRef LLVMIsAAtomicCmpXchgInst(LLVMValueRef Val); 642 LLVMValueRef LLVMIsAAtomicRMWInst(LLVMValueRef Val); 643 LLVMValueRef LLVMIsAFenceInst(LLVMValueRef Val); 644 } 645 LLVMValueRef LLVMIsAZExtInst(LLVMValueRef Val); 646 647 /+++ Usage +++/ 648 649 LLVMUseRef LLVMGetFirstUse(LLVMValueRef Val); 650 LLVMUseRef LLVMGetNextUse(LLVMUseRef U); 651 LLVMValueRef LLVMGetUser(LLVMUseRef U); 652 LLVMValueRef LLVMGetUsedValue(LLVMUseRef U); 653 654 /+++ User value +++/ 655 656 LLVMValueRef LLVMGetOperand(LLVMValueRef Val, uint Index); 657 static if (LLVM_Version >= asVersion(3, 6, 0)) { 658 LLVMUseRef LLVMGetOperandUse(LLVMValueRef Val, uint Index); 659 } 660 void LLVMSetOperand(LLVMValueRef User, uint Index, LLVMValueRef Val); 661 int LLVMGetNumOperands(LLVMValueRef Val); 662 663 /+++ Constants +++/ 664 665 LLVMValueRef LLVMConstNull(LLVMTypeRef Ty); 666 LLVMValueRef LLVMConstAllOnes(LLVMTypeRef Ty); 667 LLVMValueRef LLVMGetUndef(LLVMTypeRef Ty); 668 LLVMBool LLVMIsNull(LLVMValueRef Val); 669 LLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty); 670 671 /++++ Scalar constants ++++/ 672 673 LLVMValueRef LLVMConstInt(LLVMTypeRef IntTy, ulong N, LLVMBool SignExtend); 674 LLVMValueRef LLVMConstIntOfArbitraryPrecision(LLVMTypeRef IntTy, uint NumWords, const(ulong)* Words); 675 LLVMValueRef LLVMConstIntOfString(LLVMTypeRef IntTy, const(char)* Text, ubyte Radix); 676 LLVMValueRef LLVMConstIntOfStringAndSize(LLVMTypeRef IntTy, const(char)* Text, uint SLen, ubyte Radix); 677 LLVMValueRef LLVMConstReal(LLVMTypeRef RealTy, double N); 678 LLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const(char)* Text); 679 LLVMValueRef LLVMConstRealOfStringAndSize(LLVMTypeRef RealTy, const(char)* Text, uint SLen); 680 ulong LLVMConstIntGetZExtValue(LLVMValueRef ConstantVal); 681 long LLVMConstIntGetSExtValue(LLVMValueRef ConstantVal); 682 static if (LLVM_Version >= asVersion(3, 6, 0)) { 683 double LLVMConstRealGetDouble(LLVMValueRef ConstantVal, LLVMBool *losesInfo); 684 } 685 686 /++++ Composite Constants ++++/ 687 688 LLVMValueRef LLVMConstStringInContext(LLVMContextRef C, const(char)* Str, uint Length, LLVMBool DontNullTerminate); 689 LLVMValueRef LLVMConstString(const(char)* Str, uint Length, LLVMBool DontNullTerminate); 690 static if (LLVM_Version >= asVersion(3, 6, 0)) { 691 LLVMBool LLVMIsConstantString(LLVMValueRef c); 692 } 693 static if (LLVM_Version >= asVersion(3, 6, 0)) { 694 const(char*) LLVMGetAsString(LLVMValueRef c, size_t* Length); 695 } 696 LLVMValueRef LLVMConstStructInContext(LLVMContextRef C, LLVMValueRef* ConstantVals, uint Count, LLVMBool Packed); 697 LLVMValueRef LLVMConstStruct(LLVMValueRef* ConstantVals, uint Count, LLVMBool Packed); 698 LLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy, LLVMValueRef* ConstantVals, uint Length); 699 LLVMValueRef LLVMConstNamedStruct(LLVMTypeRef StructTy, LLVMValueRef* ConstantVals, uint Count); 700 static if (LLVM_Version >= asVersion(3, 6, 0)) { 701 LLVMValueRef LLVMGetElementAsConstant(LLVMValueRef c, uint idx); 702 } 703 LLVMValueRef LLVMConstVector(LLVMValueRef* ScalarConstantVals, uint Size); 704 705 /++++ Constant Expressions ++++/ 706 707 LLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal); 708 LLVMValueRef LLVMAlignOf(LLVMTypeRef Ty); 709 LLVMValueRef LLVMSizeOf(LLVMTypeRef Ty); 710 LLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal); 711 LLVMValueRef LLVMConstNSWNeg(LLVMValueRef ConstantVal); 712 LLVMValueRef LLVMConstNUWNeg(LLVMValueRef ConstantVal); 713 LLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal); 714 LLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal); 715 LLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 716 LLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 717 LLVMValueRef LLVMConstNUWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 718 LLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 719 LLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 720 LLVMValueRef LLVMConstNSWSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 721 LLVMValueRef LLVMConstNUWSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 722 LLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 723 LLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 724 LLVMValueRef LLVMConstNSWMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 725 LLVMValueRef LLVMConstNUWMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 726 LLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 727 LLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 728 static if (LLVM_Version >= asVersion(4, 0, 0)) { 729 LLVMValueRef LLVMConstExactUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 730 } 731 LLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 732 LLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 733 LLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 734 LLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 735 LLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 736 LLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 737 LLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 738 LLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 739 LLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 740 LLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 741 LLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate, LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 742 LLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 743 LLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 744 LLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); 745 LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, LLVMValueRef* ConstantIndices, uint NumIndices); 746 static if (LLVM_Version >= asVersion(8, 0, 0)) { 747 LLVMValueRef LLVMConstGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, 748 LLVMValueRef* ConstantIndices, uint NumIndices); 749 } 750 LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, LLVMValueRef* ConstantIndices, uint NumIndices); 751 static if (LLVM_Version >= asVersion(8, 0, 0)) { 752 LLVMValueRef LLVMConstInBoundsGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, 753 LLVMValueRef* ConstantIndices, 754 uint NumIndices); 755 } 756 LLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 757 LLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 758 LLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 759 LLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 760 LLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 761 LLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 762 LLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 763 LLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 764 LLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 765 LLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 766 LLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 767 LLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 768 static if (LLVM_Version >= asVersion(3, 4, 0)) { 769 LLVMValueRef LLVMConstAddrSpaceCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 770 } 771 LLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 772 LLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 773 LLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 774 LLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 775 LLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType, LLVMBool isSigned); 776 LLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); 777 LLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition, LLVMValueRef ConstantIfTrue, LLVMValueRef ConstantIfFalse); 778 LLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant, LLVMValueRef IndexConstant); 779 LLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant, LLVMValueRef ElementValueConstant, LLVMValueRef IndexConstant); 780 LLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant, LLVMValueRef VectorBConstant, LLVMValueRef MaskConstant); 781 LLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, uint* IdxList, uint NumIdx); 782 LLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant, LLVMValueRef ElementValueConstant, uint* IdxList, uint NumIdx); 783 784 static if (LLVM_Version >= asVersion(7, 0, 0)) { 785 LLVMValueRef LLVMGetInlineAsm(LLVMTypeRef Ty, char *AsmString, size_t AsmStringSize, char* Constraints, size_t ConstraintsSize, LLVMBool HasSideEffects, LLVMBool IsAlignStack, LLVMInlineAsmDialect Dialect); 786 } 787 788 static if (LLVM_Version >= asVersion(7, 0, 0)) { 789 deprecated("Use LLVMGetInlineAsm instead.") LLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, const(char)* AsmString, const(char)* Constraints, LLVMBool HasSideEffects, LLVMBool IsAlignStack); 790 } else { 791 LLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, const(char)* AsmString, const(char)* Constraints, LLVMBool HasSideEffects, LLVMBool IsAlignStack); 792 } 793 794 LLVMValueRef LLVMBlockAddress(LLVMValueRef F, LLVMBasicBlockRef BB); 795 796 /++++ Global Values ++++/ 797 798 LLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global); 799 LLVMBool LLVMIsDeclaration(LLVMValueRef Global); 800 LLVMLinkage LLVMGetLinkage(LLVMValueRef Global); 801 void LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage); 802 const(char)* LLVMGetSection(LLVMValueRef Global); 803 void LLVMSetSection(LLVMValueRef Global, const(char)* Section); 804 LLVMVisibility LLVMGetVisibility(LLVMValueRef Global); 805 void LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz); 806 static if (LLVM_Version >= asVersion(3, 5, 0)) { 807 LLVMDLLStorageClass LLVMGetDLLStorageClass(LLVMValueRef Global); 808 } 809 static if (LLVM_Version >= asVersion(3, 5, 0)) { 810 void LLVMSetDLLStorageClass(LLVMValueRef Global, LLVMDLLStorageClass Class); 811 } 812 813 static if (LLVM_Version >= asVersion(7, 0, 0)) { 814 LLVMUnnamedAddr LLVMGetUnnamedAddress(LLVMValueRef Global); 815 } 816 817 static if (LLVM_Version >= asVersion(7, 0, 0)) { 818 deprecated("Use LLVMGetUnnamedAddress instead.") LLVMBool LLVMHasUnnamedAddr(LLVMValueRef Global); 819 } else static if (LLVM_Version >= asVersion(3, 5, 0)) { 820 LLVMBool LLVMHasUnnamedAddr(LLVMValueRef Global); 821 } 822 823 static if (LLVM_Version >= asVersion(7, 0, 0)) { 824 void LLVMSetUnnamedAddress(LLVMValueRef Global, LLVMUnnamedAddr UnnamedAddr); 825 } 826 827 static if (LLVM_Version >= asVersion(7, 0, 0)) { 828 deprecated("Use LLVMSetUnnamedAddress instead.") void LLVMSetUnnamedAddr(LLVMValueRef Global, LLVMBool HasUnnamedAddr); 829 } else static if (LLVM_Version >= asVersion(3, 5, 0)) { 830 void LLVMSetUnnamedAddr(LLVMValueRef Global, LLVMBool HasUnnamedAddr); 831 } 832 static if (LLVM_Version >= asVersion(8, 0, 0)) { 833 LLVMTypeRef LLVMGlobalGetValueType(LLVMValueRef Global); 834 } 835 uint LLVMGetAlignment(LLVMValueRef Global); 836 void LLVMSetAlignment(LLVMValueRef Global, uint Bytes); 837 838 static if (LLVM_Version >= asVersion(8, 0, 0)) { 839 void LLVMGlobalSetMetadata(LLVMValueRef Global, uint Kind, 840 LLVMMetadataRef MD); 841 842 void LLVMGlobalEraseMetadata(LLVMValueRef Global, uint Kind); 843 844 void LLVMGlobalClearMetadata(LLVMValueRef Global); 845 846 LLVMValueMetadataEntry *LLVMGlobalCopyAllMetadata(LLVMValueRef Value, 847 size_t* NumEntries); 848 849 void LLVMDisposeValueMetadataEntries(LLVMValueMetadataEntry* Entries); 850 851 uint LLVMValueMetadataEntriesGetKind(LLVMValueMetadataEntry* Entries, 852 uint Index); 853 854 LLVMMetadataRef 855 LLVMValueMetadataEntriesGetMetadata(LLVMValueMetadataEntry* Entries, 856 uint Index); 857 } 858 859 /+++++ Global Variables +++++/ 860 861 LLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const(char)* Name); 862 LLVMValueRef LLVMAddGlobalInAddressSpace(LLVMModuleRef M, LLVMTypeRef Ty, const(char)* Name, uint AddressSpace); 863 LLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const(char)* Name); 864 LLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M); 865 LLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M); 866 LLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar); 867 LLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar); 868 void LLVMDeleteGlobal(LLVMValueRef GlobalVar); 869 LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar); 870 void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal); 871 LLVMBool LLVMIsThreadLocal(LLVMValueRef GlobalVar); 872 void LLVMSetThreadLocal(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal); 873 LLVMBool LLVMIsGlobalConstant(LLVMValueRef GlobalVar); 874 void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, LLVMBool IsConstant); 875 static if (LLVM_Version >= asVersion(3, 3, 0)) { 876 LLVMThreadLocalMode LLVMGetThreadLocalMode(LLVMValueRef GlobalVar); 877 } 878 static if (LLVM_Version >= asVersion(3, 3, 0)) { 879 void LLVMSetThreadLocalMode(LLVMValueRef GlobalVar, LLVMThreadLocalMode Mode); 880 } 881 static if (LLVM_Version >= asVersion(3, 3, 0)) { 882 LLVMBool LLVMIsExternallyInitialized(LLVMValueRef GlobalVar); 883 } 884 static if (LLVM_Version >= asVersion(3, 3, 0)) { 885 void LLVMSetExternallyInitialized(LLVMValueRef GlobalVar, LLVMBool IsExtInit); 886 } 887 888 /+++++ Global Aliases +++++/ 889 890 LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, const(char)* Name); 891 892 /+++++ Function values +++++/ 893 894 void LLVMDeleteFunction(LLVMValueRef Fn); 895 static if (LLVM_Version >= asVersion(3, 9, 0)) { 896 LLVMBool LLVMHasPersonalityFn(LLVMValueRef Fn); 897 } 898 static if (LLVM_Version >= asVersion(3, 7, 0)) { 899 LLVMValueRef LLVMGetPersonalityFn(LLVMValueRef Fn); 900 } 901 static if (LLVM_Version >= asVersion(3, 7, 0)) { 902 void LLVMSetPersonalityFn(LLVMValueRef Fn, LLVMValueRef PersonalityFn); 903 } 904 static if (LLVM_Version >= asVersion(9, 0, 0)) { 905 uint LLVMLookupIntrinsicID(const(char)* Name, size_t NameLen); 906 } 907 uint LLVMGetIntrinsicID(LLVMValueRef Fn); 908 static if (LLVM_Version >= asVersion(8, 0, 0)) { 909 LLVMValueRef LLVMGetIntrinsicDeclaration(LLVMModuleRef Mod, 910 uint ID, 911 LLVMTypeRef* ParamTypes, 912 size_t ParamCount); 913 914 LLVMTypeRef LLVMIntrinsicGetType(LLVMContextRef Ctx, uint ID, 915 LLVMTypeRef* ParamTypes, size_t ParamCount); 916 917 const(char)* LLVMIntrinsicGetName(uint ID, size_t* NameLength); 918 919 const(char)* LLVMIntrinsicCopyOverloadedName(uint ID, 920 LLVMTypeRef* ParamTypes, 921 size_t ParamCount, 922 size_t* NameLength); 923 924 LLVMBool LLVMIntrinsicIsOverloaded(uint ID); 925 } 926 uint LLVMGetFunctionCallConv(LLVMValueRef Fn); 927 void LLVMSetFunctionCallConv(LLVMValueRef Fn, uint CC); 928 const(char)* LLVMGetGC(LLVMValueRef Fn); 929 void LLVMSetGC(LLVMValueRef Fn, const(char)* Name); 930 static if (LLVM_Version < asVersion(4, 0, 0)) { 931 void LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA); 932 } 933 934 static if (LLVM_Version >= asVersion(3, 9, 0)) { 935 void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, LLVMAttributeRef A); 936 } 937 static if (LLVM_Version >= asVersion(3, 9, 0)) { 938 uint LLVMGetAttributeCountAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx); 939 } 940 static if (LLVM_Version >= asVersion(3, 9, 0)) { 941 void LLVMGetAttributesAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, LLVMAttributeRef *Attrs); 942 } 943 static if (LLVM_Version >= asVersion(3, 9, 0)) { 944 LLVMAttributeRef LLVMGetEnumAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, uint KindID); 945 } 946 static if (LLVM_Version >= asVersion(3, 9, 0)) { 947 LLVMAttributeRef LLVMGetStringAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, const(char)* K, uint KLen); 948 } 949 static if (LLVM_Version >= asVersion(3, 9, 0)) { 950 void LLVMRemoveEnumAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, uint KindID); 951 } 952 static if (LLVM_Version >= asVersion(3, 9, 0)) { 953 void LLVMRemoveStringAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, const(char)* K, uint KLen); 954 } 955 956 957 958 static if (LLVM_Version >= asVersion(3, 3, 0)) { 959 void LLVMAddTargetDependentFunctionAttr(LLVMValueRef Fn, const(char)* A, const(char)* V); 960 } 961 962 static if (LLVM_Version < asVersion(4, 0, 0)) { 963 LLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn); 964 void LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA); 965 } 966 /++++++ Function Parameters ++++++/ 967 968 uint LLVMCountParams(LLVMValueRef Fn); 969 void LLVMGetParams(LLVMValueRef Fn, LLVMValueRef* Params); 970 LLVMValueRef LLVMGetParam(LLVMValueRef Fn, uint Index); 971 LLVMValueRef LLVMGetParamParent(LLVMValueRef Inst); 972 LLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn); 973 LLVMValueRef LLVMGetLastParam(LLVMValueRef Fn); 974 LLVMValueRef LLVMGetNextParam(LLVMValueRef Arg); 975 LLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg); 976 977 static if (LLVM_Version < asVersion(4, 0, 0)) { 978 void LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA); 979 void LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA); 980 LLVMAttribute LLVMGetAttribute(LLVMValueRef Arg); 981 } 982 983 void LLVMSetParamAlignment(LLVMValueRef Arg, uint Align); 984 985 /+++ IFuncs +++/ 986 987 static if (LLVM_Version >= asVersion(9, 0, 0)) { 988 LLVMValueRef LLVMAddGlobalIFunc(LLVMModuleRef M, const(char)* Name, size_t NameLen, LLVMTypeRef Ty, uint AddrSpace, LLVMValueRef Resolver); 989 LLVMValueRef LLVMGetNamedGlobalIFunc(LLVMModuleRef M, const(char)* Name, size_t NameLen); 990 LLVMValueRef LLVMGetFirstGlobalIFunc(LLVMModuleRef M); 991 LLVMValueRef LLVMGetLastGlobalIFunc(LLVMModuleRef M); 992 LLVMValueRef LLVMGetNextGlobalIFunc(LLVMValueRef IFunc); 993 LLVMValueRef LLVMGetPreviousGlobalIFunc(LLVMValueRef IFunc); 994 LLVMValueRef LLVMGetGlobalIFuncResolver(LLVMValueRef IFunc); 995 void LLVMSetGlobalIFuncResolver(LLVMValueRef IFunc, LLVMValueRef Resolver); 996 void LLVMEraseGlobalIFunc(LLVMValueRef IFunc); 997 void LLVMRemoveGlobalIFunc(LLVMValueRef IFunc); 998 } 999 1000 /+++ Metadata +++/ 1001 1002 1003 static if (LLVM_Version >= asVersion(9, 0, 0)) { 1004 LLVMMetadataRef LLVMMDStringInContext2(LLVMContextRef C, const(char)* Str, size_t SLen); 1005 1006 LLVMMetadataRef LLVMMDNodeInContext2(LLVMContextRef C, LLVMMetadataRef* MDs, size_t Count); 1007 1008 deprecated("Use LLVMMDStringInContext2 instead.") LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const(char)* Str, uint SLen); 1009 deprecated("Use LLVMMDStringInContext2 instead.") LLVMValueRef LLVMMDString(const(char)* Str, uint SLen); 1010 1011 deprecated("Use LLVMMDNodeInContext2") LLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef* Vals, uint Count); 1012 deprecated("Use LLVMMDNodeInContext2") LLVMValueRef LLVMMDNode(LLVMValueRef* Vals, uint Count); 1013 } 1014 else { 1015 LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const(char)* Str, uint SLen); 1016 LLVMValueRef LLVMMDString(const(char)* Str, uint SLen); 1017 LLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef* Vals, uint Count); 1018 LLVMValueRef LLVMMDNode(LLVMValueRef* Vals, uint Count); 1019 } 1020 1021 static if (LLVM_Version >= asVersion(5, 0, 0)) { 1022 LLVMValueRef LLVMMetadataAsValue(LLVMContextRef C, LLVMMetadataRef MD); 1023 LLVMMetadataRef LLVMValueAsMetadata(LLVMValueRef Val); 1024 } 1025 const(char)* LLVMGetMDString(LLVMValueRef V, uint* Len); 1026 static if (LLVM_Version >= asVersion(3, 2, 0)) { 1027 uint LLVMGetMDNodeNumOperands(LLVMValueRef V); 1028 } 1029 static if (LLVM_Version >= asVersion(3, 2, 0)) { 1030 void LLVMGetMDNodeOperands(LLVMValueRef V, LLVMValueRef *Dest); 1031 } 1032 1033 /+++ Basic Block +++/ 1034 1035 LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB); 1036 LLVMBool LLVMValueIsBasicBlock(LLVMValueRef Val); 1037 LLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val); 1038 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1039 const(char)* LLVMGetBasicBlockName(LLVMBasicBlockRef BB); 1040 } 1041 LLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB); 1042 LLVMValueRef LLVMGetBasicBlockTerminator(LLVMBasicBlockRef BB); 1043 uint LLVMCountBasicBlocks(LLVMValueRef Fn); 1044 void LLVMGetBasicBlocks(LLVMValueRef Fn, LLVMBasicBlockRef* BasicBlocks); 1045 LLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn); 1046 LLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn); 1047 LLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB); 1048 LLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB); 1049 LLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn); 1050 static if (LLVM_Version >= asVersion(9, 0, 0)) { 1051 void LLVMInsertExistingBasicBlockAfterInsertBlock(LLVMBuilderRef Builder, LLVMBasicBlockRef BB); 1052 void LLVMAppendExistingBasicBlock(LLVMValueRef Fn, LLVMBasicBlockRef BB); 1053 } 1054 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1055 LLVMBasicBlockRef LLVMCreateBasicBlockInContext(LLVMContextRef C, 1056 const(char)* Name); 1057 } 1058 LLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C, LLVMValueRef Fn, const(char)* Name); 1059 LLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef Fn, const(char)* Name); 1060 LLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C, LLVMBasicBlockRef BB, const(char)* Name); 1061 LLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef InsertBeforeBB, const(char)* Name); 1062 void LLVMDeleteBasicBlock(LLVMBasicBlockRef BB); 1063 void LLVMRemoveBasicBlockFromParent(LLVMBasicBlockRef BB); 1064 void LLVMMoveBasicBlockBefore(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos); 1065 void LLVMMoveBasicBlockAfter(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos); 1066 LLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB); 1067 LLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB); 1068 1069 /+++ Instructions +++/ 1070 1071 int LLVMHasMetadata(LLVMValueRef Val); 1072 LLVMValueRef LLVMGetMetadata(LLVMValueRef Val, uint KindID); 1073 void LLVMSetMetadata(LLVMValueRef Val, uint KindID, LLVMValueRef Node); 1074 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1075 LLVMValueMetadataEntry* 1076 LLVMInstructionGetAllMetadataOtherThanDebugLoc(LLVMValueRef Instr, 1077 size_t* NumEntries); 1078 } 1079 LLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst); 1080 LLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst); 1081 LLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst); 1082 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1083 void LLVMInstructionRemoveFromParent(LLVMValueRef Inst); 1084 } 1085 void LLVMInstructionEraseFromParent(LLVMValueRef Inst); 1086 LLVMOpcode LLVMGetInstructionOpcode(LLVMValueRef Inst); 1087 LLVMIntPredicate LLVMGetICmpPredicate(LLVMValueRef Inst); 1088 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1089 LLVMRealPredicate LLVMGetFCmpPredicate(LLVMValueRef Inst); 1090 } 1091 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1092 LLVMValueRef LLVMInstructionClone(LLVMValueRef Inst); 1093 } 1094 LLVMBasicBlockRef LLVMGetSwitchDefaultDest(LLVMValueRef SwitchInstr); 1095 1096 1097 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1098 LLVMTypeRef LLVMGetAllocatedType(LLVMValueRef Alloca); 1099 } 1100 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1101 LLVMBool LLVMIsInBounds(LLVMValueRef GEP); 1102 } 1103 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1104 void LLVMSetIsInBounds(LLVMValueRef GEP, LLVMBool InBounds); 1105 } 1106 1107 /++++ Call Sites and Invocations ++++/ 1108 1109 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1110 uint LLVMGetNumArgOperands(LLVMValueRef Instr); 1111 } 1112 void LLVMSetInstructionCallConv(LLVMValueRef Instr, uint CC); 1113 uint LLVMGetInstructionCallConv(LLVMValueRef Instr); 1114 1115 static if (LLVM_Version < asVersion(4, 0, 0)) { 1116 void LLVMAddInstrAttribute(LLVMValueRef Instr, uint index, LLVMAttribute); 1117 void LLVMRemoveInstrAttribute(LLVMValueRef Instr, uint index, LLVMAttribute); 1118 } 1119 void LLVMSetInstrParamAlignment(LLVMValueRef Instr, uint index, uint Align); 1120 1121 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1122 void LLVMAddCallSiteAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, LLVMAttributeRef A); 1123 } 1124 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1125 uint LLVMGetCallSiteAttributeCount(LLVMValueRef C, LLVMAttributeIndex Idx); 1126 } 1127 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1128 void LLVMGetCallSiteAttributes(LLVMValueRef C, LLVMAttributeIndex Idx, LLVMAttributeRef *Attrs); 1129 } 1130 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1131 LLVMAttributeRef LLVMGetCallSiteEnumAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, uint KindID); 1132 } 1133 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1134 LLVMAttributeRef LLVMGetCallSiteStringAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, const(char)* K, uint KLen); 1135 } 1136 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1137 void LLVMRemoveCallSiteEnumAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, uint KindID); 1138 } 1139 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1140 void LLVMRemoveCallSiteStringAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, const(char)* K, uint KLen); 1141 } 1142 1143 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1144 LLVMTypeRef LLVMGetCalledFunctionType(LLVMValueRef C); 1145 } 1146 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1147 LLVMValueRef LLVMGetCalledValue(LLVMValueRef Instr); 1148 } 1149 1150 LLVMBool LLVMIsTailCall(LLVMValueRef CallInst); 1151 1152 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1153 LLVMBasicBlockRef LLVMGetNormalDest(LLVMValueRef InvokeInst); 1154 } 1155 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1156 LLVMBasicBlockRef LLVMGetUnwindDest(LLVMValueRef InvokeInst); 1157 } 1158 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1159 void LLVMSetNormalDest(LLVMValueRef InvokeInst, LLVMBasicBlockRef B); 1160 } 1161 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1162 void LLVMSetUnwindDest(LLVMValueRef InvokeInst, LLVMBasicBlockRef B); 1163 } 1164 1165 void LLVMSetTailCall(LLVMValueRef CallInst, LLVMBool IsTailCall); 1166 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1167 uint LLVMGetNumSuccessors(LLVMValueRef Term); 1168 } 1169 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1170 LLVMBasicBlockRef LLVMGetSuccessor(LLVMValueRef Term, uint i); 1171 } 1172 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1173 void LLVMSetSuccessor(LLVMValueRef Term, uint i, LLVMBasicBlockRef block); 1174 } 1175 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1176 LLVMBool LLVMIsConditional(LLVMValueRef Branch); 1177 } 1178 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1179 LLVMValueRef LLVMGetCondition(LLVMValueRef Branch); 1180 } 1181 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1182 void LLVMSetCondition(LLVMValueRef Branch, LLVMValueRef Cond); 1183 } 1184 1185 /++++ PHI Nodes ++++/ 1186 1187 void LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef* IncomingValues, LLVMBasicBlockRef* IncomingBlocks, uint Count); 1188 uint LLVMCountIncoming(LLVMValueRef PhiNode); 1189 LLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, uint Index); 1190 LLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, uint Index); 1191 1192 1193 1194 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1195 uint LLVMGetNumIndices(LLVMValueRef Inst); 1196 } 1197 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1198 const(uint)* LLVMGetIndices(LLVMValueRef Inst); 1199 } 1200 1201 /++ Instruction Builders ++/ 1202 1203 LLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C); 1204 LLVMBuilderRef LLVMCreateBuilder(); 1205 void LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, LLVMValueRef Instr); 1206 void LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr); 1207 void LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block); 1208 LLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder); 1209 void LLVMClearInsertionPosition(LLVMBuilderRef Builder); 1210 void LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr); 1211 void LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr, const(char)* Name); 1212 void LLVMDisposeBuilder(LLVMBuilderRef Builder); 1213 static if (LLVM_Version >= asVersion(9, 0, 0)) { 1214 LLVMMetadataRef LLVMGetCurrentDebugLocation2(LLVMBuilderRef Builder); 1215 void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Builder, LLVMMetadataRef Loc); 1216 1217 LLVMMetadataRef LLVMBuilderGetDefaultFPMathTag(LLVMBuilderRef Builder); 1218 void LLVMBuilderSetDefaultFPMathTag(LLVMBuilderRef Builder, LLVMMetadataRef FPMathTag); 1219 1220 deprecated("Passing the NULL location will crash. Use LLVMSetCurrentDebugLocation2 instead.") void LLVMSetCurrentDebugLocation(LLVMBuilderRef Builder, LLVMValueRef L); 1221 deprecated("Passing the NULL location will crash. Use LLVMGetCurrentDebugLocation2 instead.") LLVMValueRef LLVMGetCurrentDebugLocation(LLVMBuilderRef Builder); 1222 } else { 1223 void LLVMSetCurrentDebugLocation(LLVMBuilderRef Builder, LLVMValueRef L); 1224 LLVMValueRef LLVMGetCurrentDebugLocation(LLVMBuilderRef Builder); 1225 } 1226 void LLVMSetInstDebugLocation(LLVMBuilderRef Builder, LLVMValueRef Inst); 1227 LLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef); 1228 LLVMValueRef LLVMBuildRet(LLVMBuilderRef, LLVMValueRef V); 1229 LLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef, LLVMValueRef* RetVals, uint N); 1230 LLVMValueRef LLVMBuildBr(LLVMBuilderRef, LLVMBasicBlockRef Dest); 1231 LLVMValueRef LLVMBuildCondBr(LLVMBuilderRef, LLVMValueRef If, LLVMBasicBlockRef Then, LLVMBasicBlockRef Else); 1232 LLVMValueRef LLVMBuildSwitch(LLVMBuilderRef, LLVMValueRef V, LLVMBasicBlockRef Else, uint NumCases); 1233 LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr, uint NumDests); 1234 LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef* Args, uint NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, const(char)* Name); 1235 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1236 LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Fn, 1237 LLVMValueRef* Args, uint NumArgs, 1238 LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, 1239 const(char)* Name); 1240 } 1241 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1242 LLVMValueRef LLVMBuildLandingPad(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef PersFn, uint NumClauses, const(char)* Name); 1243 } else { 1244 LLVMValueRef LLVMBuildLandingPad(LLVMBuilderRef B, LLVMTypeRef Ty, uint NumClauses, const(char)* Name); 1245 } 1246 LLVMValueRef LLVMBuildResume(LLVMBuilderRef B, LLVMValueRef Exn); 1247 LLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef); 1248 void LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal, LLVMBasicBlockRef Dest); 1249 void LLVMAddDestination(LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest); 1250 1251 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1252 uint LLVMGetNumClauses(LLVMValueRef LandingPad); 1253 } 1254 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1255 LLVMValueRef LLVMGetClause(LLVMValueRef LandingPad, uint Idx); 1256 } 1257 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1258 LLVMBool LLVMIsCleanup(LLVMValueRef LandingPad); 1259 } 1260 1261 void LLVMAddClause(LLVMValueRef LandingPad, LLVMValueRef ClauseVal); 1262 void LLVMSetCleanup(LLVMValueRef LandingPad, LLVMBool Val); 1263 LLVMValueRef LLVMBuildAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1264 LLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1265 LLVMValueRef LLVMBuildNUWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1266 LLVMValueRef LLVMBuildFAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1267 LLVMValueRef LLVMBuildSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1268 LLVMValueRef LLVMBuildNSWSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1269 LLVMValueRef LLVMBuildNUWSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1270 LLVMValueRef LLVMBuildFSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1271 LLVMValueRef LLVMBuildMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1272 LLVMValueRef LLVMBuildNSWMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1273 LLVMValueRef LLVMBuildNUWMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1274 LLVMValueRef LLVMBuildFMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1275 LLVMValueRef LLVMBuildUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1276 static if (LLVM_Version >= asVersion(4, 0, 0)) { 1277 LLVMValueRef LLVMBuildExactUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1278 } 1279 LLVMValueRef LLVMBuildSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1280 LLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1281 LLVMValueRef LLVMBuildFDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1282 LLVMValueRef LLVMBuildURem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1283 LLVMValueRef LLVMBuildSRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1284 LLVMValueRef LLVMBuildFRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1285 LLVMValueRef LLVMBuildShl(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1286 LLVMValueRef LLVMBuildLShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1287 LLVMValueRef LLVMBuildAShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1288 LLVMValueRef LLVMBuildAnd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1289 LLVMValueRef LLVMBuildOr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1290 LLVMValueRef LLVMBuildXor(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1291 LLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1292 LLVMValueRef LLVMBuildNeg(LLVMBuilderRef, LLVMValueRef V, const(char)* Name); 1293 LLVMValueRef LLVMBuildNSWNeg(LLVMBuilderRef B, LLVMValueRef V, const(char)* Name); 1294 LLVMValueRef LLVMBuildNUWNeg(LLVMBuilderRef B, LLVMValueRef V, const(char)* Name); 1295 LLVMValueRef LLVMBuildFNeg(LLVMBuilderRef, LLVMValueRef V, const(char)* Name); 1296 LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef V, const(char)* Name); 1297 LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const(char)* Name); 1298 LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const(char)* Name); 1299 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1300 LLVMValueRef LLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr, 1301 LLVMValueRef Val, LLVMValueRef Len, 1302 uint Align); 1303 LLVMValueRef LLVMBuildMemCpy(LLVMBuilderRef B, 1304 LLVMValueRef Dst, uint DstAlign, 1305 LLVMValueRef Src, uint SrcAlign, 1306 LLVMValueRef Size); 1307 LLVMValueRef LLVMBuildMemMove(LLVMBuilderRef B, 1308 LLVMValueRef Dst, uint DstAlign, 1309 LLVMValueRef Src, uint SrcAlign, 1310 LLVMValueRef Size); 1311 } 1312 LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const(char)* Name); 1313 LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const(char)* Name); 1314 LLVMValueRef LLVMBuildFree(LLVMBuilderRef, LLVMValueRef PointerVal); 1315 LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef PointerVal, const(char)* Name); 1316 LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr); 1317 LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices, uint NumIndices, const(char)* Name); 1318 LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, LLVMValueRef* Indices, uint NumIndices, const(char)* Name); 1319 LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, uint Idx, const(char)* Name); 1320 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1321 LLVMValueRef LLVMBuildGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, 1322 LLVMValueRef Pointer, LLVMValueRef* Indices, 1323 uint NumIndices, const(char)* Name); 1324 LLVMValueRef LLVMBuildInBoundsGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, 1325 LLVMValueRef Pointer, LLVMValueRef* Indices, 1326 uint NumIndices, const(char)* Name); 1327 LLVMValueRef LLVMBuildStructGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, 1328 LLVMValueRef Pointer, uint Idx, 1329 const(char)* Name); 1330 } 1331 LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const(char)* Str, const(char)* Name); 1332 LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const(char)* Str, const(char)* Name); 1333 LLVMBool LLVMGetVolatile(LLVMValueRef MemoryAccessInst); 1334 void LLVMSetVolatile(LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile); 1335 static if (LLVM_Version >= asVersion(10, 0, 0)) { 1336 LLVMBool LLVMGetWeak(LLVMValueRef CmpXchgInst); 1337 void LLVMSetWeak(LLVMValueRef CmpXchgInst, LLVMBool IsWeak); 1338 } 1339 static if (LLVM_Version >= asVersion(3, 8, 0)) { 1340 LLVMAtomicOrdering LLVMGetOrdering(LLVMValueRef MemoryAccessInst); 1341 } 1342 static if (LLVM_Version >= asVersion(3, 8, 0)) { 1343 void LLVMSetOrdering(LLVMValueRef MemoryAccessInst, LLVMAtomicOrdering Ordering); 1344 } 1345 static if (LLVM_Version >= asVersion(10, 0, 0)) { 1346 LLVMAtomicRMWBinOp LLVMGetAtomicRMWBinOp(LLVMValueRef AtomicRMWInst); 1347 void LLVMSetAtomicRMWBinOp(LLVMValueRef AtomicRMWInst, LLVMAtomicRMWBinOp BinOp); 1348 } 1349 LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1350 LLVMValueRef LLVMBuildZExt(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1351 LLVMValueRef LLVMBuildSExt(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1352 LLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1353 LLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1354 LLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1355 LLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1356 LLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1357 LLVMValueRef LLVMBuildFPExt(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1358 LLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1359 LLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1360 LLVMValueRef LLVMBuildBitCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1361 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1362 LLVMValueRef LLVMBuildAddrSpaceCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1363 } 1364 LLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1365 LLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1366 LLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1367 LLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1368 LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1369 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1370 LLVMValueRef LLVMBuildIntCast2(LLVMBuilderRef, LLVMValueRef Val, 1371 LLVMTypeRef DestTy, LLVMBool IsSigned, 1372 const(char)* Name); 1373 deprecated("Use LLVMBuildIntCast2 instead.") LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1374 } else { 1375 LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1376 } 1377 LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val, LLVMTypeRef DestTy, const(char)* Name); 1378 LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1379 LLVMValueRef LLVMBuildFCmp(LLVMBuilderRef, LLVMRealPredicate Op, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1380 LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef Ty, const(char)* Name); 1381 LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef Fn, LLVMValueRef* Args, uint NumArgs, const(char)* Name); 1382 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1383 LLVMValueRef LLVMBuildCall2(LLVMBuilderRef, LLVMTypeRef, LLVMValueRef Fn, 1384 LLVMValueRef* Args, uint NumArgs, 1385 const(char)* Name); 1386 } 1387 LLVMValueRef LLVMBuildSelect(LLVMBuilderRef, LLVMValueRef If, LLVMValueRef Then, LLVMValueRef Else, const(char)* Name); 1388 LLVMValueRef LLVMBuildVAArg(LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty, const(char)* Name); 1389 LLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef Index, const(char)* Name); 1390 LLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef, LLVMValueRef VecVal, LLVMValueRef EltVal, LLVMValueRef Index, const(char)* Name); 1391 LLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, const(char)* Name); 1392 LLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef, LLVMValueRef AggVal, uint Index, const(char)* Name); 1393 LLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef, LLVMValueRef AggVal, LLVMValueRef EltVal, uint Index, const(char)* Name); 1394 static if (LLVM_Version >= asVersion(10, 0, 0)) { 1395 LLVMValueRef LLVMBuildFreeze(LLVMBuilderRef, LLVMValueRef Val, const(char)* Name); 1396 } 1397 LLVMValueRef LLVMBuildIsNull(LLVMBuilderRef, LLVMValueRef Val, const(char)* Name); 1398 LLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef, LLVMValueRef Val, const(char)* Name); 1399 LLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, const(char)* Name); 1400 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1401 LLVMValueRef LLVMBuildAtomicRMW(LLVMBuilderRef B, LLVMAtomicRMWBinOp op, LLVMValueRef PTR, LLVMValueRef Val, LLVMAtomicOrdering ordering, LLVMBool singleThread); 1402 } 1403 1404 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1405 LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr, LLVMValueRef Cmp, LLVMValueRef New, LLVMAtomicOrdering SuccessOrdering, LLVMAtomicOrdering FailureOrdering, LLVMBool SingleThread); 1406 } 1407 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1408 LLVMBool LLVMIsAtomicSingleThread(LLVMValueRef AtomicInst); 1409 } 1410 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1411 void LLVMSetAtomicSingleThread(LLVMValueRef AtomicInst, LLVMBool SingleThread); 1412 } 1413 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1414 LLVMAtomicOrdering LLVMGetCmpXchgSuccessOrdering(LLVMValueRef CmpXchgInst); 1415 } 1416 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1417 void LLVMSetCmpXchgSuccessOrdering(LLVMValueRef CmpXchgInst, LLVMAtomicOrdering Ordering); 1418 } 1419 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1420 LLVMAtomicOrdering LLVMGetCmpXchgFailureOrdering(LLVMValueRef CmpXchgInst); 1421 } 1422 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1423 void LLVMSetCmpXchgFailureOrdering(LLVMValueRef CmpXchgInst, LLVMAtomicOrdering Ordering); 1424 } 1425 1426 static if (LLVM_Version >= asVersion(3, 5, 0)) { 1427 LLVMValueRef LLVMBuildFence(LLVMBuilderRef B, LLVMAtomicOrdering ordering, LLVMBool singleThread, const(char)*Name); 1428 } 1429 1430 /++ Module Providers ++/ 1431 1432 LLVMModuleProviderRef LLVMCreateModuleProviderForExistingModule(LLVMModuleRef M); 1433 void LLVMDisposeModuleProvider(LLVMModuleProviderRef M); 1434 1435 /++ Memory Buffers ++/ 1436 1437 LLVMBool LLVMCreateMemoryBufferWithContentsOfFile(const(char)* Path, LLVMMemoryBufferRef* OutMemBuf, char** OutMessage); 1438 LLVMBool LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef* OutMemBuf, char** OutMessage); 1439 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1440 LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRange(const(char)* InputData, size_t InputDataLength, const(char)* BufferName, LLVMBool RequiresNullTerminator); 1441 } 1442 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1443 LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRangeCopy(const(char)* InputData, size_t InputDataLength, const(char)* BufferName); 1444 } 1445 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1446 const(char)* LLVMGetBufferStart(LLVMMemoryBufferRef MemBuf); 1447 } 1448 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1449 size_t LLVMGetBufferSize(LLVMMemoryBufferRef MemBuf); 1450 } 1451 void LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf); 1452 1453 /++ Pass Registry ++/ 1454 1455 LLVMPassRegistryRef LLVMGetGlobalPassRegistry(); 1456 1457 /++ Pass Managers ++/ 1458 1459 LLVMPassManagerRef LLVMCreatePassManager(); 1460 LLVMPassManagerRef LLVMCreateFunctionPassManagerForModule(LLVMModuleRef M); 1461 LLVMPassManagerRef LLVMCreateFunctionPassManager(LLVMModuleProviderRef MP); 1462 LLVMBool LLVMRunPassManager(LLVMPassManagerRef PM, LLVMModuleRef M); 1463 LLVMBool LLVMInitializeFunctionPassManager(LLVMPassManagerRef FPM); 1464 LLVMBool LLVMRunFunctionPassManager(LLVMPassManagerRef FPM, LLVMValueRef F); 1465 LLVMBool LLVMFinalizeFunctionPassManager(LLVMPassManagerRef FPM); 1466 void LLVMDisposePassManager(LLVMPassManagerRef PM); 1467 1468 /++ Threading ++/ 1469 1470 static if (LLVM_Version >= asVersion(3, 3, 0) && LLVM_Version < asVersion(3, 5, 0)) { 1471 LLVMBool LLVMStartMultithreaded(); 1472 } 1473 static if (LLVM_Version >= asVersion(3, 3, 0) && LLVM_Version < asVersion(3, 5, 0)) { 1474 void LLVMStopMultithreaded(); 1475 } 1476 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1477 LLVMBool LLVMIsMultithreaded(); 1478 } 1479 1480 /+ Disassembler +/ 1481 1482 LLVMDisasmContextRef LLVMCreateDisasm(const(char)* TripleName, void* DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp); 1483 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1484 LLVMDisasmContextRef LLVMCreateDisasmCPU(const(char)* Triple, const(char)* CPU, void* DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp); 1485 } 1486 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1487 LLVMDisasmContextRef LLVMCreateDisasmCPUFeatures(const(char)* Triple, const(char)* CPU, const(char)* Features, void *DisInfo, int TagType, LLVMOpInfoCallback GetOpInfo, LLVMSymbolLookupCallback SymbolLookUp); 1488 } 1489 static if (LLVM_Version >= asVersion(3, 2, 0)) { 1490 int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, ulong Options); 1491 } 1492 void LLVMDisasmDispose(LLVMDisasmContextRef DC); 1493 size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, ubyte* Bytes, ulong BytesSize, ulong PC, char* OutString, size_t OutStringSize); 1494 1495 /+ Enhanced Disassembly +/ 1496 1497 static if (LLVM_Version < asVersion(3, 3, 0)) { 1498 int EDGetDisassembler(EDDisassemblerRef* disassembler, const(char)* triple, EDAssemblySyntax_t syntax); 1499 } 1500 static if (LLVM_Version < asVersion(3, 3, 0)) { 1501 int EDGetRegisterName(const(char)** regName, EDDisassemblerRef disassembler, uint regID); 1502 } 1503 static if (LLVM_Version < asVersion(3, 3, 0)) { 1504 int EDRegisterIsStackPointer(EDDisassemblerRef disassembler, uint regID); 1505 } 1506 static if (LLVM_Version < asVersion(3, 3, 0)) { 1507 int EDRegisterIsProgramCounter(EDDisassemblerRef disassembler, uint regID); 1508 } 1509 static if (LLVM_Version < asVersion(3, 3, 0)) { 1510 uint EDCreateInsts(EDInstRef* insts, uint count, EDDisassemblerRef disassembler, EDByteReaderCallback byteReader, ulong address, void* arg); 1511 } 1512 static if (LLVM_Version < asVersion(3, 3, 0)) { 1513 void EDReleaseInst(EDInstRef inst); 1514 } 1515 static if (LLVM_Version < asVersion(3, 3, 0)) { 1516 int EDInstByteSize(EDInstRef inst); 1517 } 1518 static if (LLVM_Version < asVersion(3, 3, 0)) { 1519 int EDGetInstString(const(char)** buf, EDInstRef inst); 1520 } 1521 static if (LLVM_Version < asVersion(3, 3, 0)) { 1522 int EDInstID(uint* instID, EDInstRef inst); 1523 } 1524 static if (LLVM_Version < asVersion(3, 3, 0)) { 1525 int EDInstIsBranch(EDInstRef inst); 1526 } 1527 static if (LLVM_Version < asVersion(3, 3, 0)) { 1528 int EDInstIsMove(EDInstRef inst); 1529 } 1530 static if (LLVM_Version < asVersion(3, 3, 0)) { 1531 int EDBranchTargetID(EDInstRef inst); 1532 } 1533 static if (LLVM_Version < asVersion(3, 3, 0)) { 1534 int EDMoveSourceID(EDInstRef inst); 1535 } 1536 static if (LLVM_Version < asVersion(3, 3, 0)) { 1537 int EDMoveTargetID(EDInstRef inst); 1538 } 1539 static if (LLVM_Version < asVersion(3, 3, 0)) { 1540 int EDNumTokens(EDInstRef inst); 1541 } 1542 static if (LLVM_Version < asVersion(3, 3, 0)) { 1543 int EDGetToken(EDTokenRef* token, EDInstRef inst, int index); 1544 } 1545 static if (LLVM_Version < asVersion(3, 3, 0)) { 1546 int EDGetTokenString(const(char)** buf, EDTokenRef token); 1547 } 1548 static if (LLVM_Version < asVersion(3, 3, 0)) { 1549 int EDOperandIndexForToken(EDTokenRef token); 1550 } 1551 static if (LLVM_Version < asVersion(3, 3, 0)) { 1552 int EDTokenIsWhitespace(EDTokenRef token); 1553 } 1554 static if (LLVM_Version < asVersion(3, 3, 0)) { 1555 int EDTokenIsPunctuation(EDTokenRef token); 1556 } 1557 static if (LLVM_Version < asVersion(3, 3, 0)) { 1558 int EDTokenIsOpcode(EDTokenRef token); 1559 } 1560 static if (LLVM_Version < asVersion(3, 3, 0)) { 1561 int EDTokenIsLiteral(EDTokenRef token); 1562 } 1563 static if (LLVM_Version < asVersion(3, 3, 0)) { 1564 int EDTokenIsRegister(EDTokenRef token); 1565 } 1566 static if (LLVM_Version < asVersion(3, 3, 0)) { 1567 int EDTokenIsNegativeLiteral(EDTokenRef token); 1568 } 1569 static if (LLVM_Version < asVersion(3, 3, 0)) { 1570 int EDLiteralTokenAbsoluteValue(ulong* value, EDTokenRef token); 1571 } 1572 static if (LLVM_Version < asVersion(3, 3, 0)) { 1573 int EDRegisterTokenValue(uint* registerID, EDTokenRef token); 1574 } 1575 static if (LLVM_Version < asVersion(3, 3, 0)) { 1576 int EDNumOperands(EDInstRef inst); 1577 } 1578 static if (LLVM_Version < asVersion(3, 3, 0)) { 1579 int EDGetOperand(EDOperandRef* operand, EDInstRef inst, int index); 1580 } 1581 static if (LLVM_Version < asVersion(3, 3, 0)) { 1582 int EDOperandIsRegister(EDOperandRef operand); 1583 } 1584 static if (LLVM_Version < asVersion(3, 3, 0)) { 1585 int EDOperandIsImmediate(EDOperandRef operand); 1586 } 1587 static if (LLVM_Version < asVersion(3, 3, 0)) { 1588 int EDOperandIsMemory(EDOperandRef operand); 1589 } 1590 static if (LLVM_Version < asVersion(3, 3, 0)) { 1591 int EDRegisterOperandValue(uint* value, EDOperandRef operand); 1592 } 1593 static if (LLVM_Version < asVersion(3, 3, 0)) { 1594 int EDImmediateOperandValue(ulong* value, EDOperandRef operand); 1595 } 1596 static if (LLVM_Version < asVersion(3, 3, 0)) { 1597 int EDEvaluateOperand(ulong* result, EDOperandRef operand, EDRegisterReaderCallback regReader, void* arg); 1598 } 1599 static if (LLVM_Version < asVersion(3, 3, 0)) { 1600 uint EDBlockCreateInsts(EDInstRef* insts, int count, EDDisassemblerRef disassembler, EDByteBlock_t byteBlock, ulong address); 1601 } 1602 static if (LLVM_Version < asVersion(3, 3, 0)) { 1603 int EDBlockEvaluateOperand(ulong* result, EDOperandRef operand, EDRegisterBlock_t regBlock); 1604 } 1605 static if (LLVM_Version < asVersion(3, 3, 0)) { 1606 int EDBlockVisitTokens(EDInstRef inst, EDTokenVisitor_t visitor); 1607 } 1608 1609 /+ Execution Engine +/ 1610 1611 LLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty, ulong N, LLVMBool IsSigned); 1612 LLVMGenericValueRef LLVMCreateGenericValueOfPointer(void* P); 1613 LLVMGenericValueRef LLVMCreateGenericValueOfFloat(LLVMTypeRef Ty, double N); 1614 uint LLVMGenericValueIntWidth(LLVMGenericValueRef GenValRef); 1615 ulong LLVMGenericValueToInt(LLVMGenericValueRef GenVal, LLVMBool IsSigned); 1616 void* LLVMGenericValueToPointer(LLVMGenericValueRef GenVal); 1617 double LLVMGenericValueToFloat(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal); 1618 void LLVMDisposeGenericValue(LLVMGenericValueRef GenVal); 1619 LLVMBool LLVMCreateExecutionEngineForModule(LLVMExecutionEngineRef* OutEE, LLVMModuleRef M, char** OutError); 1620 LLVMBool LLVMCreateInterpreterForModule(LLVMExecutionEngineRef* OutInterp, LLVMModuleRef M, char** OutError); 1621 LLVMBool LLVMCreateJITCompilerForModule(LLVMExecutionEngineRef* OutJIT, LLVMModuleRef M, uint OptLevel, char** OutError); 1622 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1623 void LLVMInitializeMCJITCompilerOptions(LLVMMCJITCompilerOptions* Options, size_t SizeOfOptions); 1624 } 1625 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1626 LLVMBool LLVMCreateMCJITCompilerForModule(LLVMExecutionEngineRef* OutJIT, LLVMModuleRef M, LLVMMCJITCompilerOptions* Options, size_t SizeOfOptions, char** OutError); 1627 } 1628 static if (LLVM_Version < asVersion(3, 8, 0)) { 1629 LLVMBool LLVMCreateExecutionEngine(LLVMExecutionEngineRef* OutEE, LLVMModuleProviderRef MP, char** OutError); 1630 } 1631 static if (LLVM_Version < asVersion(3, 8, 0)) { 1632 LLVMBool LLVMCreateInterpreter(LLVMExecutionEngineRef* OutInterp, LLVMModuleProviderRef MP, char** OutError); 1633 } 1634 static if (LLVM_Version < asVersion(3, 8, 0)) { 1635 LLVMBool LLVMCreateJITCompiler(LLVMExecutionEngineRef* OutJIT, LLVMModuleProviderRef MP, uint OptLevel, char** OutError); 1636 } 1637 void LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE); 1638 void LLVMRunStaticConstructors(LLVMExecutionEngineRef EE); 1639 void LLVMRunStaticDestructors(LLVMExecutionEngineRef EE); 1640 int LLVMRunFunctionAsMain(LLVMExecutionEngineRef EE, LLVMValueRef F, uint ArgC, const(char*)* ArgV, const(char*)* EnvP); 1641 LLVMGenericValueRef LLVMRunFunction(LLVMExecutionEngineRef EE, LLVMValueRef F, uint NumArgs, LLVMGenericValueRef* Args); 1642 void LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F); 1643 void LLVMAddModule(LLVMExecutionEngineRef EE, LLVMModuleRef M); 1644 static if (LLVM_Version < asVersion(3, 8, 0)) { 1645 void LLVMAddModuleProvider(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP); 1646 } 1647 LLVMBool LLVMRemoveModule(LLVMExecutionEngineRef EE, LLVMModuleRef M, LLVMModuleRef* OutMod, char** OutError); 1648 static if (LLVM_Version < asVersion(3, 8, 0)) { 1649 LLVMBool LLVMRemoveModuleProvider(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP, LLVMModuleRef* OutMod, char** OutError); 1650 } 1651 LLVMBool LLVMFindFunction(LLVMExecutionEngineRef EE, const(char)* Name, LLVMValueRef* OutFn); 1652 void* LLVMRecompileAndRelinkFunction(LLVMExecutionEngineRef EE, LLVMValueRef Fn); 1653 LLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE); 1654 static if (LLVM_Version >= asVersion(3, 5, 0)) { 1655 LLVMTargetMachineRef LLVMGetExecutionEngineTargetMachine(LLVMExecutionEngineRef EE); 1656 } 1657 void LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr); 1658 void* LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global); 1659 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1660 ulong LLVMGetGlobalValueAddress(LLVMExecutionEngineRef EE, const(char)*Name); 1661 } 1662 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1663 ulong LLVMGetFunctionAddress(LLVMExecutionEngineRef EE, const(char)*Name); 1664 } 1665 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1666 LLVMMCJITMemoryManagerRef LLVMCreateSimpleMCJITMemoryManager(void* Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destroy); 1667 } 1668 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1669 void LLVMDisposeMCJITMemoryManager(LLVMMCJITMemoryManagerRef MM); 1670 } 1671 1672 /+ Initialization Routines +/ 1673 1674 void LLVMInitializeCore(LLVMPassRegistryRef R); 1675 void LLVMInitializeTransformUtils(LLVMPassRegistryRef R); 1676 void LLVMInitializeScalarOpts(LLVMPassRegistryRef R); 1677 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1678 void LLVMInitializeObjCARCOpts(LLVMPassRegistryRef R); 1679 } 1680 void LLVMInitializeVectorization(LLVMPassRegistryRef R); 1681 void LLVMInitializeInstCombine(LLVMPassRegistryRef R); 1682 void LLVMInitializeIPO(LLVMPassRegistryRef R); 1683 void LLVMInitializeInstrumentation(LLVMPassRegistryRef R); 1684 void LLVMInitializeAnalysis(LLVMPassRegistryRef R); 1685 void LLVMInitializeIPA(LLVMPassRegistryRef R); 1686 void LLVMInitializeCodeGen(LLVMPassRegistryRef R); 1687 void LLVMInitializeTarget(LLVMPassRegistryRef R); 1688 1689 /+ Linker +/ 1690 1691 static if (LLVM_Version >= asVersion(3, 2, 0) && LLVM_Version < asVersion(3, 9, 0)) { 1692 LLVMBool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src, LLVMLinkerMode Mode, char** OutMessage); 1693 } 1694 static if (LLVM_Version >= asVersion(3, 8, 0)) { 1695 LLVMBool LLVMLinkModules2(LLVMModuleRef Dest, LLVMModuleRef Src); 1696 } 1697 1698 /+ LTO +/ 1699 1700 const(char)* lto_get_version(); 1701 const(char)* lto_get_error_message(); 1702 bool lto_module_is_object_file(const(char)* path); 1703 bool lto_module_is_object_file_for_target(const(char)* path, const(char)* target_triple_prefix); 1704 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1705 lto_bool_t lto_module_has_objc_category(const(void)* mem, size_t length); 1706 } 1707 bool lto_module_is_object_file_in_memory(const(void)* mem, size_t length); 1708 bool lto_module_is_object_file_in_memory_for_target(const(void)* mem, size_t length, const(char)* target_triple_prefix); 1709 lto_module_t lto_module_create(const(char)* path); 1710 lto_module_t lto_module_create_from_memory(const(void)* mem, size_t length); 1711 static if (LLVM_Version >= asVersion(3, 5, 0)) { 1712 lto_module_t lto_module_create_from_memory_with_path(const(void)* mem, size_t length, const(char)*path); 1713 } 1714 1715 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1716 lto_module_t lto_module_create_in_local_context(const(void)* mem, size_t length, const(char)*path); 1717 } 1718 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1719 lto_module_t lto_module_create_in_codegen_context(const(void)* mem, size_t length, const(char)*path, lto_code_gen_t cg); 1720 } 1721 lto_module_t lto_module_create_from_fd(int fd, const(char)* path, size_t file_size); 1722 lto_module_t lto_module_create_from_fd_at_offset(int fd, const(char)* path, size_t file_size, size_t map_size, size_t offset); 1723 void lto_module_dispose(lto_module_t mod); 1724 const(char)* lto_module_get_target_triple(lto_module_t mod); 1725 void lto_module_set_target_triple(lto_module_t mod, const(char)* triple); 1726 uint lto_module_get_num_symbols(lto_module_t mod); 1727 const(char)* lto_module_get_symbol_name(lto_module_t mod, uint index); 1728 lto_symbol_attributes lto_module_get_symbol_attribute(lto_module_t mod, uint index); 1729 static if (LLVM_Version >= asVersion(3, 5, 0) && LLVM_Version < asVersion(3, 7, 0)) { 1730 uint lto_module_get_num_deplibs(lto_module_t mod); 1731 } 1732 static if (LLVM_Version >= asVersion(3, 5, 0) && LLVM_Version < asVersion(3, 7, 0)) { 1733 const(char)* lto_module_get_deplib(lto_module_t mod, uint index); 1734 } 1735 static if (LLVM_Version >= asVersion(3, 5, 0) && LLVM_Version < asVersion(3, 7, 0)) { 1736 uint lto_module_get_num_linkeropts(lto_module_t mod); 1737 } 1738 static if (LLVM_Version >= asVersion(3, 5, 0) && LLVM_Version < asVersion(3, 7, 0)) { 1739 const(char)* lto_module_get_linkeropt(lto_module_t mod, uint index); 1740 } 1741 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1742 const(char)* lto_module_get_linkeropts(lto_module_t mod); 1743 } 1744 static if (LLVM_Version >= asVersion(3, 5, 0)) { 1745 void lto_codegen_set_diagnostic_handler(lto_code_gen_t, lto_diagnostic_handler_t, void *); 1746 } 1747 lto_code_gen_t lto_codegen_create(); 1748 static if (LLVM_Version >= asVersion(3, 6, 0)) { 1749 lto_code_gen_t lto_codegen_create_in_local_context(); 1750 } 1751 void lto_codegen_dispose(lto_code_gen_t); 1752 bool lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod); 1753 bool lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model); 1754 bool lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model); 1755 void lto_codegen_set_cpu(lto_code_gen_t cg, const(char)* cpu); 1756 void lto_codegen_set_assembler_path(lto_code_gen_t cg, const(char)* path); 1757 void lto_codegen_set_assembler_args(lto_code_gen_t cg, const(char)** args, int nargs); 1758 void lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const(char)* symbol); 1759 bool lto_codegen_write_merged_modules(lto_code_gen_t cg, const(char)* path); 1760 const(void)* lto_codegen_compile(lto_code_gen_t cg, size_t* length); 1761 bool lto_codegen_compile_to_file(lto_code_gen_t cg, const(char)** name); 1762 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1763 bool lto_codegen_optimize(lto_code_gen_t cg); 1764 } 1765 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1766 const(void)* lto_codegen_compile_optimized(lto_code_gen_t cg, size_t* length); 1767 } 1768 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1769 uint lto_api_version(); 1770 } 1771 void lto_codegen_debug_options(lto_code_gen_t cg, const(char)* ); 1772 static if (LLVM_Version >= asVersion(10, 0, 0)) { 1773 void lto_codegen_debug_options_array(lto_code_gen_t cg, const(char*)*, int number); 1774 } 1775 static if (LLVM_Version >= asVersion(3, 3, 0)) { 1776 void lto_initialize_disassembler(); 1777 } 1778 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1779 void lto_codegen_set_should_internalize(lto_code_gen_t cg, bool ShouldInternalize); 1780 } 1781 static if (LLVM_Version >= asVersion(3, 7, 0)) { 1782 void lto_codegen_set_should_embed_uselists(lto_code_gen_t cg, bool ShouldEmbedUselists); 1783 } 1784 1785 static if (LLVM_Version >= asVersion(10, 0, 0)) { 1786 const(char*)* lto_runtime_lib_symbols_list(size_t* size); 1787 } 1788 1789 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1790 thinlto_code_gen_t thinlto_create_codegen(); 1791 } 1792 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1793 void thinlto_codegen_dispose(thinlto_code_gen_t cg); 1794 } 1795 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1796 void thinlto_codegen_add_module(thinlto_code_gen_t cg, const(char)* identifier, const(char)* data, int length); 1797 } 1798 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1799 void thinlto_codegen_process(thinlto_code_gen_t cg); 1800 } 1801 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1802 uint thinlto_module_get_num_objects(thinlto_code_gen_t cg); 1803 } 1804 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1805 LTOObjectBuffer thinlto_module_get_object(thinlto_code_gen_t cg, uint index); 1806 } 1807 static if (LLVM_Version >= asVersion(4, 0, 0)) { 1808 uint thinlto_module_get_num_object_files(thinlto_code_gen_t cg); 1809 const(char)* thinlto_module_get_object_file(thinlto_code_gen_t cg, uint index); 1810 } 1811 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1812 lto_bool_t thinlto_codegen_set_pic_model(thinlto_code_gen_t cg, lto_codegen_model); 1813 } 1814 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1815 void thinlto_codegen_set_cache_dir(thinlto_code_gen_t cg, const(char)* cache_dir); 1816 } 1817 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1818 void thinlto_codegen_set_cache_pruning_interval(thinlto_code_gen_t cg, int interval); 1819 } 1820 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1821 void thinlto_codegen_set_final_cache_size_relative_to_available_space(thinlto_code_gen_t cg, uint percentage); 1822 } 1823 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1824 void thinlto_codegen_set_cache_entry_expiration(thinlto_code_gen_t cg, uint expiration); 1825 } 1826 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1827 void thinlto_codegen_set_savetemps_dir(thinlto_code_gen_t cg, const(char)* save_temps_dir); 1828 } 1829 static if (LLVM_Version >= asVersion(4, 0, 0)) { 1830 void thinlto_set_generated_objects_dir(thinlto_code_gen_t cg, const(char)* save_temps_dir); 1831 } 1832 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1833 void thinlto_codegen_set_cpu(thinlto_code_gen_t cg, const(char)* cpu); 1834 } 1835 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1836 void thinlto_codegen_disable_codegen(thinlto_code_gen_t cg, lto_bool_t disable); 1837 } 1838 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1839 void thinlto_codegen_set_codegen_only(thinlto_code_gen_t cg, lto_bool_t codegen_only); 1840 } 1841 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1842 void thinlto_debug_options(const(char*) *options, int number); 1843 } 1844 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1845 lto_bool_t lto_module_is_thinlto(lto_module_t mod); 1846 } 1847 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1848 void thinlto_codegen_add_must_preserve_symbol(thinlto_code_gen_t cg, const(char)* name, int length); 1849 } 1850 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1851 void thinlto_codegen_add_cross_referenced_symbol(thinlto_code_gen_t cg, const(char)* name, int length); 1852 } 1853 static if (LLVM_Version >= asVersion(7, 0, 0)) { 1854 void thinlto_codegen_set_cache_size_bytes(thinlto_code_gen_t cg, uint max_size_bytes); 1855 } 1856 static if (LLVM_Version >= asVersion(8, 0, 0)) { 1857 void thinlto_codegen_set_cache_size_megabytes(thinlto_code_gen_t cg, uint max_size_megabytes); 1858 } 1859 1860 static if (LLVM_Version >= asVersion(7, 0, 0)) { 1861 void thinlto_codegen_set_cache_size_files(thinlto_code_gen_t cg, uint max_size_files); 1862 } 1863 1864 static if (LLVM_Version >= asVersion(9, 0, 0)) { 1865 lto_input_t lto_input_create(const(void)* buffer, size_t buffer_size, const(char)* path); 1866 1867 void lto_input_dispose(lto_input_t input); 1868 1869 uint lto_input_get_num_dependent_libraries(lto_input_t input); 1870 1871 const(char)* lto_input_get_dependent_library(lto_input_t input, size_t index, size_t* size); 1872 } 1873 1874 /+ Object file reading and writing +/ 1875 1876 static if (LLVM_Version >= asVersion(9, 0, 0)) { 1877 LLVMBinaryRef LLVMCreateBinary(LLVMMemoryBufferRef MemBuf, LLVMContextRef Context, char** ErrorMessage); 1878 void LLVMDisposeBinary(LLVMBinaryRef BR); 1879 LLVMMemoryBufferRef LLVMBinaryCopyMemoryBuffer(LLVMBinaryRef BR); 1880 LLVMBinaryType LLVMBinaryGetType(LLVMBinaryRef BR); 1881 LLVMBinaryRef LLVMMachOUniversalBinaryCopyObjectForArch(LLVMBinaryRef BR, const(char)* Arch, size_t ArchLen, char** ErrorMessage); 1882 LLVMSectionIteratorRef LLVMObjectFileCopySectionIterator(LLVMBinaryRef BR); 1883 LLVMBool LLVMObjectFileIsSectionIteratorAtEnd(LLVMBinaryRef BR, LLVMSectionIteratorRef SI); 1884 LLVMSymbolIteratorRef LLVMObjectFileCopySymbolIterator(LLVMBinaryRef BR); 1885 LLVMBool LLVMObjectFileIsSymbolIteratorAtEnd(LLVMBinaryRef BR, LLVMSymbolIteratorRef SI); 1886 1887 deprecated("Use LLVMCreateBinary instead.") LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf); 1888 deprecated("Use LLVMDisposeBinary instead.") void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile); 1889 deprecated("Use LLVMObjectFileCopySectionIterator instead.") LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef ObjectFile); 1890 deprecated("Use LLVMObjectFileIsSectionIteratorAtEnd instead.") LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile, LLVMSectionIteratorRef SI); 1891 deprecated("Use LLVMObjectFileCopySymbolIterator instead.") LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile); 1892 deprecated("Use LLVMObjectFileIsSymbolIteratorAtEnd instead.") LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile, LLVMSymbolIteratorRef SI); 1893 } else { 1894 LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf); 1895 void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile); 1896 LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef ObjectFile); 1897 LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile, LLVMSectionIteratorRef SI); 1898 LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile); 1899 LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile, LLVMSymbolIteratorRef SI); 1900 } 1901 1902 void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI); 1903 void LLVMMoveToNextSection(LLVMSectionIteratorRef SI); 1904 void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect, LLVMSymbolIteratorRef Sym); 1905 void LLVMDisposeSymbolIterator(LLVMSymbolIteratorRef SI); 1906 void LLVMMoveToNextSymbol(LLVMSymbolIteratorRef SI); 1907 const(char)* LLVMGetSectionName(LLVMSectionIteratorRef SI); 1908 ulong LLVMGetSectionSize(LLVMSectionIteratorRef SI); 1909 const(char)* LLVMGetSectionContents(LLVMSectionIteratorRef SI); 1910 ulong LLVMGetSectionAddress(LLVMSectionIteratorRef SI); 1911 LLVMBool LLVMGetSectionContainsSymbol(LLVMSectionIteratorRef SI, LLVMSymbolIteratorRef Sym); 1912 LLVMRelocationIteratorRef LLVMGetRelocations(LLVMSectionIteratorRef Section); 1913 void LLVMDisposeRelocationIterator(LLVMRelocationIteratorRef RI); 1914 LLVMBool LLVMIsRelocationIteratorAtEnd(LLVMSectionIteratorRef Section, LLVMRelocationIteratorRef RI); 1915 void LLVMMoveToNextRelocation(LLVMRelocationIteratorRef RI); 1916 const(char)* LLVMGetSymbolName(LLVMSymbolIteratorRef SI); 1917 ulong LLVMGetSymbolAddress(LLVMSymbolIteratorRef SI); 1918 static if (LLVM_Version < asVersion(3, 5, 0)) { 1919 ulong LLVMGetSymbolFileOffset(LLVMSymbolIteratorRef SI); 1920 } 1921 ulong LLVMGetSymbolSize(LLVMSymbolIteratorRef SI); 1922 static if (LLVM_Version < asVersion(3, 7, 0)) { 1923 ulong LLVMGetRelocationAddress(LLVMRelocationIteratorRef RI); 1924 } 1925 ulong LLVMGetRelocationOffset(LLVMRelocationIteratorRef RI); 1926 LLVMSymbolIteratorRef LLVMGetRelocationSymbol(LLVMRelocationIteratorRef RI); 1927 ulong LLVMGetRelocationType(LLVMRelocationIteratorRef RI); 1928 const(char)* LLVMGetRelocationTypeName(LLVMRelocationIteratorRef RI); 1929 const(char)* LLVMGetRelocationValueString(LLVMRelocationIteratorRef RI); 1930 1931 /+ Target information +/ 1932 1933 mixin(LLVM_Targets.map!(t => "nothrow void LLVMInitialize" ~ t ~ "TargetInfo();").joiner.array.orEmpty); 1934 mixin(LLVM_Targets.map!(t => "nothrow void LLVMInitialize" ~ t ~ "Target();").joiner.array.orEmpty); 1935 mixin(LLVM_Targets.map!(t => "nothrow void LLVMInitialize" ~ t ~ "TargetMC();").joiner.array.orEmpty); 1936 mixin(LLVM_AsmPrinters.map!(t => "nothrow void LLVMInitialize" ~ t ~ "AsmPrinter();").joiner.array.orEmpty); 1937 mixin(LLVM_AsmParsers.map!(t => "nothrow void LLVMInitialize" ~ t ~ "AsmParser();").joiner.array.orEmpty); 1938 mixin(LLVM_Disassemblers.map!(t => "nothrow void LLVMInitialize" ~ t ~ "Disassembler();").joiner.array.orEmpty); 1939 1940 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1941 LLVMTargetDataRef LLVMGetModuleDataLayout(LLVMModuleRef M); 1942 } 1943 static if (LLVM_Version >= asVersion(3, 9, 0)) { 1944 void LLVMSetModuleDataLayout(LLVMModuleRef M, LLVMTargetDataRef DL); 1945 } 1946 LLVMTargetDataRef LLVMCreateTargetData(const(char)* StringRep); 1947 static if (LLVM_Version < asVersion(3, 9, 0)) { 1948 void LLVMAddTargetData(LLVMTargetDataRef TD, LLVMPassManagerRef PM); 1949 } 1950 void LLVMAddTargetLibraryInfo(LLVMTargetLibraryInfoRef TLI, LLVMPassManagerRef PM); 1951 char* LLVMCopyStringRepOfTargetData(LLVMTargetDataRef TD); 1952 LLVMByteOrdering LLVMByteOrder(LLVMTargetDataRef TD); 1953 uint LLVMPointerSize(LLVMTargetDataRef TD); 1954 static if (LLVM_Version >= asVersion(3, 2, 0)) { 1955 uint LLVMPointerSizeForAS(LLVMTargetDataRef TD, uint AS); 1956 } 1957 LLVMTypeRef LLVMIntPtrType(LLVMTargetDataRef TD); 1958 static if (LLVM_Version >= asVersion(3, 2, 0)) { 1959 LLVMTypeRef LLVMIntPtrTypeForAS(LLVMTargetDataRef TD, uint AS); 1960 } 1961 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1962 LLVMTypeRef LLVMIntPtrTypeInContext(LLVMContextRef C, LLVMTargetDataRef TD); 1963 } 1964 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1965 LLVMTypeRef LLVMIntPtrTypeForASInContext(LLVMContextRef C, LLVMTargetDataRef TD, uint AS); 1966 } 1967 ulong LLVMSizeOfTypeInBits(LLVMTargetDataRef TD, LLVMTypeRef Ty); 1968 ulong LLVMStoreSizeOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); 1969 ulong LLVMABISizeOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); 1970 uint LLVMABIAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); 1971 uint LLVMCallFrameAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); 1972 uint LLVMPreferredAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); 1973 uint LLVMPreferredAlignmentOfGlobal(LLVMTargetDataRef TD, LLVMValueRef GlobalVar); 1974 uint LLVMElementAtOffset(LLVMTargetDataRef TD, LLVMTypeRef StructTy, ulong Offset); 1975 ulong LLVMOffsetOfElement(LLVMTargetDataRef TD, LLVMTypeRef StructTy, uint Element); 1976 void LLVMDisposeTargetData(LLVMTargetDataRef TD); 1977 1978 /+ Target machine +/ 1979 1980 LLVMTargetRef LLVMGetFirstTarget(); 1981 LLVMTargetRef LLVMGetNextTarget(LLVMTargetRef T); 1982 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1983 LLVMTargetRef LLVMGetTargetFromName(const(char)* Name); 1984 } 1985 static if (LLVM_Version >= asVersion(3, 4, 0)) { 1986 LLVMBool LLVMGetTargetFromTriple(const(char)* Triple, LLVMTargetRef* T, char** ErrorMessage); 1987 } 1988 const(char)* LLVMGetTargetName(LLVMTargetRef T); 1989 const(char)* LLVMGetTargetDescription(LLVMTargetRef T); 1990 LLVMBool LLVMTargetHasJIT(LLVMTargetRef T); 1991 LLVMBool LLVMTargetHasTargetMachine(LLVMTargetRef T); 1992 LLVMBool LLVMTargetHasAsmBackend(LLVMTargetRef T); 1993 LLVMTargetMachineRef LLVMCreateTargetMachine(LLVMTargetRef T, const(char)* Triple, const(char)* CPU, const(char)* Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, LLVMCodeModel CodeModel); 1994 void LLVMDisposeTargetMachine(LLVMTargetMachineRef T); 1995 LLVMTargetRef LLVMGetTargetMachineTarget(LLVMTargetMachineRef T); 1996 char* LLVMGetTargetMachineTriple(LLVMTargetMachineRef T); 1997 char* LLVMGetTargetMachineCPU(LLVMTargetMachineRef T); 1998 char* LLVMGetTargetMachineFeatureString(LLVMTargetMachineRef T); 1999 static if (LLVM_Version < asVersion(3, 7, 0)) { 2000 LLVMTargetDataRef LLVMGetTargetMachineData(LLVMTargetMachineRef T); 2001 } 2002 static if (LLVM_Version >= asVersion(3, 9, 0)) { 2003 LLVMTargetDataRef LLVMCreateTargetDataLayout(LLVMTargetMachineRef T); 2004 } 2005 static if (LLVM_Version >= asVersion(3, 4, 0)) { 2006 void LLVMSetTargetMachineAsmVerbosity(LLVMTargetMachineRef T, LLVMBool VerboseAsm); 2007 } 2008 LLVMBool LLVMTargetMachineEmitToFile(LLVMTargetMachineRef T, LLVMModuleRef M, char* Filename, LLVMCodeGenFileType codegen, char** ErrorMessage); 2009 static if (LLVM_Version >= asVersion(3, 3, 0)) { 2010 LLVMBool LLVMTargetMachineEmitToMemoryBuffer(LLVMTargetMachineRef T, LLVMModuleRef M, LLVMCodeGenFileType codegen, char** ErrorMessage, LLVMMemoryBufferRef* OutMemBuf); 2011 } 2012 static if (LLVM_Version >= asVersion(3, 4, 0)) { 2013 char* LLVMGetDefaultTargetTriple(); 2014 } 2015 static if (LLVM_Version >= asVersion(3, 5, 0)) { 2016 void LLVMAddAnalysisPasses(LLVMTargetMachineRef T, LLVMPassManagerRef PM); 2017 } 2018 2019 /+ Support +/ 2020 static if (LLVM_Version >= asVersion(3, 4, 0)) { 2021 LLVMBool LLVMLoadLibraryPermanently(const(char)* Filename); 2022 } 2023 static if (LLVM_Version >= asVersion(3, 6, 0)) { 2024 void LLVMParseCommandLineOptions(int argc, const(char*)* argv, const(char)* Overview); 2025 } 2026 static if (LLVM_Version >= asVersion(3, 7, 0)) { 2027 void* LLVMSearchForAddressOfSymbol(const(char)* symbolName); 2028 } 2029 static if (LLVM_Version >= asVersion(3, 7, 0)) { 2030 void LLVMAddSymbol(const(char) *symbolName, void *symbolValue); 2031 } 2032 2033 /+ IRReader +/ 2034 static if (LLVM_Version >= asVersion(3, 4, 0)) { 2035 LLVMBool LLVMParseIRInContext(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutM, char** OutMessage); 2036 } 2037 2038 /+ JIT compilation of LLVM IR +/ 2039 static if (LLVM_Version >= asVersion(5, 0, 0) && LLVM_Version < asVersion(7, 0, 0)) { 2040 LLVMSharedModuleRef LLVMOrcMakeSharedModule(LLVMModuleRef Mod); 2041 void LLVMOrcDisposeSharedModuleRef(LLVMSharedModuleRef SharedMod); 2042 } 2043 static if (LLVM_Version >= asVersion(5, 0, 0) && LLVM_Version < asVersion(6, 0, 0)) { 2044 LLVMSharedObjectBufferRef LLVMOrcMakeSharedObjectBuffer(LLVMMemoryBufferRef ObjBuffer); 2045 void LLVMOrcDisposeSharedObjectBufferRef(LLVMSharedObjectBufferRef SharedObjBuffer); 2046 } 2047 static if (LLVM_Version >= asVersion(3, 8, 0)) { 2048 LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM); 2049 } 2050 static if (LLVM_Version >= asVersion(3, 9, 0)) { 2051 const(char)* LLVMOrcGetErrorMsg(LLVMOrcJITStackRef JITStack); 2052 } 2053 static if (LLVM_Version >= asVersion(3, 8, 0)) { 2054 void LLVMOrcGetMangledSymbol(LLVMOrcJITStackRef JITStack, char** MangledSymbol, const(char)* Symbol); 2055 } 2056 static if (LLVM_Version >= asVersion(3, 8, 0)) { 2057 void LLVMOrcDisposeMangledSymbol(char* MangledSymbol); 2058 } 2059 2060 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2061 LLVMErrorRef LLVMOrcCreateLazyCompileCallback(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress* RetAddr, LLVMOrcLazyCompileCallbackFn Callback, void* CallbackCtx); 2062 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2063 LLVMOrcErrorCode LLVMOrcCreateLazyCompileCallback(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress* RetAddr, LLVMOrcLazyCompileCallbackFn Callback, void* CallbackCtx); 2064 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2065 LLVMOrcTargetAddress LLVMOrcCreateLazyCompileCallback(LLVMOrcJITStackRef JITStack, LLVMOrcLazyCompileCallbackFn Callback, void* CallbackCtx); 2066 } 2067 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2068 LLVMErrorRef LLVMOrcCreateIndirectStub(LLVMOrcJITStackRef JITStack, const(char)* StubName, LLVMOrcTargetAddress InitAddr); 2069 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2070 void LLVMOrcCreateIndirectStub(LLVMOrcJITStackRef JITStack, const(char)* StubName, LLVMOrcTargetAddress InitAddr); 2071 } 2072 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2073 LLVMErrorRef LLVMOrcSetIndirectStubPointer(LLVMOrcJITStackRef JITStack, const(char)* StubName, LLVMOrcTargetAddress NewAddr); 2074 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2075 void LLVMOrcSetIndirectStubPointer(LLVMOrcJITStackRef JITStack, const(char)* StubName, LLVMOrcTargetAddress NewAddr); 2076 } 2077 2078 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2079 LLVMErrorRef LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, 2080 LLVMOrcModuleHandle* RetHandle, 2081 LLVMModuleRef Mod, 2082 LLVMOrcSymbolResolverFn SymbolResolver, 2083 void* SymbolResolverCtx); 2084 } else static if (LLVM_Version >= asVersion(7, 0, 0)) { 2085 LLVMOrcErrorCode LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2086 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2087 LLVMOrcErrorCode LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMSharedModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2088 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2089 LLVMOrcModuleHandle LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2090 } 2091 2092 2093 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2094 LLVMErrorRef LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, 2095 LLVMOrcModuleHandle* RetHandle, 2096 LLVMModuleRef Mod, 2097 LLVMOrcSymbolResolverFn SymbolResolver, 2098 void* SymbolResolverCtx); 2099 } else static if (LLVM_Version >= asVersion(7, 0, 0)) { 2100 LLVMOrcErrorCode LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2101 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2102 LLVMOrcErrorCode LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMSharedModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2103 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2104 LLVMOrcModuleHandle LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, LLVMModuleRef Mod, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2105 } 2106 2107 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2108 LLVMErrorRef LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMMemoryBufferRef Obj, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2109 } else static if (LLVM_Version >= asVersion(6, 0, 0)) { 2110 LLVMOrcErrorCode LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMMemoryBufferRef Obj, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2111 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2112 LLVMOrcErrorCode LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle* RetHandle, LLVMSharedObjectBufferRef Obj, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2113 2114 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2115 LLVMOrcModuleHandle LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack, LLVMObjectFileRef Obj, LLVMOrcSymbolResolverFn SymbolResolver, void* SymbolResolverCtx); 2116 } 2117 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2118 LLVMErrorRef LLVMOrcRemoveModule(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle H); 2119 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2120 LLVMOrcErrorCode LLVMOrcRemoveModule(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle H); 2121 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2122 void LLVMOrcRemoveModule(LLVMOrcJITStackRef JITStack, LLVMOrcModuleHandle H); 2123 } 2124 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2125 LLVMErrorRef LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress* RetAddr, const(char)* SymbolName); 2126 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2127 LLVMOrcErrorCode LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress *RetAddr, const(char)* SymbolName); 2128 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2129 LLVMOrcTargetAddress LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack, const(char)* SymbolName); 2130 } 2131 2132 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2133 LLVMErrorRef LLVMOrcGetSymbolAddressIn(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress* RetAddr, LLVMOrcModuleHandle H, const(char)* SymbolName); 2134 } else static if (LLVM_Version >= asVersion(7, 0, 0)) { 2135 LLVMOrcErrorCode LLVMOrcGetSymbolAddressIn(LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress* RetAddr, LLVMOrcModuleHandle H, const(char)* SymbolName); 2136 } 2137 2138 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2139 LLVMErrorRef LLVMOrcDisposeInstance(LLVMOrcJITStackRef JITStack); 2140 } else static if (LLVM_Version >= asVersion(5, 0, 0)) { 2141 LLVMOrcErrorCode LLVMOrcDisposeInstance(LLVMOrcJITStackRef JITStack); 2142 } else static if (LLVM_Version >= asVersion(3, 8, 0)) { 2143 void LLVMOrcDisposeInstance(LLVMOrcJITStackRef JITStack); 2144 } 2145 2146 /+ Debug info flags +/ 2147 2148 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2149 uint LLVMDebugMetadataVersion(); 2150 } 2151 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2152 uint LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module); 2153 } 2154 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2155 uint LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module); 2156 } 2157 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2158 LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module); 2159 } 2160 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2161 LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M); 2162 } 2163 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2164 LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M); 2165 } 2166 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2167 void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder); 2168 } 2169 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2170 void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder); 2171 } 2172 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2173 LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang, LLVMMetadataRef FileRef, const(char)* Producer, size_t ProducerLen, LLVMBool isOptimized, const(char)* Flags, size_t FlagsLen, uint RuntimeVer, const(char)* SplitName, size_t SplitNameLen, LLVMDWARFEmissionKind Kind, uint DWOId, LLVMBool SplitDebugInlining, LLVMBool DebugInfoForProfiling); 2174 } 2175 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2176 LLVMMetadataRef LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const(char)* Filename, size_t FilenameLen, const(char)* Directory, size_t DirectoryLen); 2177 } 2178 static if (LLVM_Version >= asVersion(6, 0, 0)) { 2179 LLVMMetadataRef LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, uint Line, uint Column, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt); 2180 } 2181 2182 2183 2184 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2185 LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const(char)* Name); 2186 } 2187 2188 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2189 LLVMComdatRef LLVMGetComdat(LLVMValueRef V); 2190 } 2191 2192 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2193 void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C); 2194 } 2195 2196 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2197 LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C); 2198 } 2199 2200 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2201 void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind); 2202 } 2203 2204 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2205 const(char)* LLVMGetSourceFileName(LLVMModuleRef M, size_t* Len); 2206 } 2207 2208 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2209 void LLVMSetSourceFileName(LLVMModuleRef M, const(char)* Name, size_t Len); 2210 } 2211 2212 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2213 LLVMModuleFlagEntry* LLVMCopyModuleFlagsMetadata(LLVMModuleRef M, size_t* Len); 2214 } 2215 2216 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2217 void LLVMDisposeModuleFlagsMetadata(LLVMModuleFlagEntry* Entries); 2218 } 2219 2220 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2221 LLVMModuleFlagBehavior LLVMModuleFlagEntriesGetFlagBehavior(LLVMModuleFlagEntry* Entries, uint Index); 2222 } 2223 2224 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2225 const(char)* LLVMModuleFlagEntriesGetKey(LLVMModuleFlagEntry* Entries, uint Index, size_t* Len); 2226 } 2227 2228 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2229 LLVMMetadataRef LLVMModuleFlagEntriesGetMetadata(LLVMModuleFlagEntry* Entries, uint Index); 2230 } 2231 2232 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2233 LLVMMetadataRef LLVMGetModuleFlag(LLVMModuleRef M, const(char)* Key, size_t KeyLen); 2234 } 2235 2236 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2237 void LLVMAddModuleFlag(LLVMModuleRef M, LLVMModuleFlagBehavior Behavior, const(char)* Key, size_t KeyLen, LLVMMetadataRef Val); 2238 } 2239 2240 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2241 const(char)* LLVMGetModuleInlineAsm(LLVMModuleRef M, size_t* Len); 2242 } 2243 2244 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2245 void LLVMAppendModuleInlineAsm(LLVMModuleRef M, const(char)* Asm, size_t Len); 2246 } 2247 2248 2249 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2250 LLVMValueRef LLVMGetNamedGlobalAlias(LLVMModuleRef M, const(char)* Name, size_t NameLen); 2251 } 2252 2253 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2254 LLVMValueRef LLVMGetFirstGlobalAlias(LLVMModuleRef M); 2255 } 2256 2257 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2258 LLVMValueRef LLVMGetLastGlobalAlias(LLVMModuleRef M); 2259 } 2260 2261 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2262 LLVMValueRef LLVMGetNextGlobalAlias(LLVMValueRef GA); 2263 } 2264 2265 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2266 LLVMValueRef LLVMGetPreviousGlobalAlias(LLVMValueRef GA); 2267 } 2268 2269 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2270 LLVMValueRef LLVMAliasGetAliasee(LLVMValueRef Alias); 2271 } 2272 2273 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2274 void LLVMAliasSetAliasee(LLVMValueRef Alias, LLVMValueRef Aliasee); 2275 } 2276 2277 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2278 LLVMValueRef LLVMBuildCleanupRet(LLVMBuilderRef B, LLVMValueRef CatchPad, LLVMBasicBlockRef BB); 2279 } 2280 2281 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2282 LLVMValueRef LLVMBuildCatchRet(LLVMBuilderRef B, LLVMValueRef CatchPad, LLVMBasicBlockRef BB); 2283 } 2284 2285 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2286 LLVMValueRef LLVMBuildCatchPad(LLVMBuilderRef B, LLVMValueRef ParentPad, LLVMValueRef* Args, uint NumArgs, const (char)* Name); 2287 } 2288 2289 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2290 LLVMValueRef LLVMBuildCleanupPad(LLVMBuilderRef B, LLVMValueRef ParentPad, LLVMValueRef* Args, uint NumArgs, const (char)* Name); 2291 } 2292 2293 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2294 LLVMValueRef LLVMBuildCatchSwitch(LLVMBuilderRef B, LLVMValueRef ParentPad, LLVMBasicBlockRef UnwindBB, uint NumHandlers, const (char)* Name); 2295 } 2296 2297 2298 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2299 void LLVMAddHandler(LLVMValueRef CatchSwitch, LLVMBasicBlockRef Dest); 2300 } 2301 2302 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2303 uint LLVMGetNumHandlers(LLVMValueRef CatchSwitch); 2304 } 2305 2306 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2307 void LLVMGetHandlers(LLVMValueRef CatchSwitch, LLVMBasicBlockRef* Handlers); 2308 } 2309 2310 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2311 void LLVMSetArgOperand(LLVMValueRef Funclet, uint i, LLVMValueRef value); 2312 } 2313 2314 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2315 LLVMValueRef LLVMGetParentCatchSwitch(LLVMValueRef CatchPad); 2316 } 2317 2318 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2319 void LLVMSetParentCatchSwitch(LLVMValueRef CatchPad, LLVMValueRef CatchSwitch); 2320 } 2321 2322 2323 static if (LLVM_Version >= asVersion(10, 0, 0)) { 2324 LLVMMetadataRef LLVMDIBuilderCreateModule(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope, const(char)* Name, size_t NameLen, const(char)* ConfigMacros, size_t ConfigMacrosLen, const(char)* IncludePath, size_t IncludePathLen, const(char)* SysRoot, size_t SysRootLen); 2325 } else static if (LLVM_Version >= asVersion(7, 0, 0)) { 2326 LLVMMetadataRef LLVMDIBuilderCreateModule(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope, const(char)* Name, size_t NameLen, const(char)* ConfigMacros, size_t ConfigMacrosLen, const(char)* IncludePath, size_t IncludePathLen, const(char)* ISysRoot, size_t ISysRootLen); 2327 } 2328 2329 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2330 LLVMMetadataRef LLVMDIBuilderCreateNameSpace(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope, const(char)* Name, size_t NameLen, LLVMBool ExportSymbols); 2331 } 2332 2333 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2334 LLVMMetadataRef LLVMDIBuilderCreateFunction(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, const(char)* LinkageName, size_t LinkageNameLen, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Ty, LLVMBool IsLocalToUnit, LLVMBool IsDefinition, uint ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized); 2335 } 2336 2337 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2338 LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef File, uint Line, uint Column); 2339 } 2340 2341 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2342 LLVMMetadataRef LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef File, uint Discriminator); 2343 } 2344 2345 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2346 LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef NS, LLVMMetadataRef File, uint Line); 2347 } 2348 2349 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2350 LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromAlias(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef ImportedEntity, LLVMMetadataRef File, uint Line); 2351 } 2352 2353 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2354 LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromModule(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef M, LLVMMetadataRef File, uint Line); 2355 } 2356 2357 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2358 LLVMMetadataRef LLVMDIBuilderCreateImportedDeclaration(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef Decl, LLVMMetadataRef File, uint Line, const(char)* Name, size_t NameLen); 2359 } 2360 2361 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2362 uint LLVMDILocationGetLine(LLVMMetadataRef Location); 2363 } 2364 2365 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2366 uint LLVMDILocationGetColumn(LLVMMetadataRef Location); 2367 } 2368 2369 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2370 LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location); 2371 } 2372 2373 static if (LLVM_Version >= asVersion(9, 0, 0)) { 2374 LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location); 2375 LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope); 2376 const(char)* LLVMDIFileGetDirectory(LLVMMetadataRef File, uint* Len); 2377 const(char)* LLVMDIFileGetFilename(LLVMMetadataRef File, uint* Len); 2378 const(char)* LLVMDIFileGetSource(LLVMMetadataRef File, uint* Len); 2379 } 2380 2381 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2382 LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder, LLVMMetadataRef* Data, size_t NumElements); 2383 } 2384 2385 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2386 LLVMMetadataRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, LLVMMetadataRef File, LLVMMetadataRef* ParameterTypes, uint NumParameterTypes, LLVMDIFlags Flags); 2387 } 2388 2389 static if (LLVM_Version >= asVersion(9, 0, 0)) { 2390 LLVMMetadataRef LLVMDIBuilderCreateEnumerator(LLVMDIBuilderRef Builder, const(char)* Name, size_t NameLen, int64_t Value, LLVMBool IsUnsigned); 2391 } 2392 2393 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2394 LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNumber, uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef* Elements, uint NumElements, LLVMMetadataRef ClassTy); 2395 } 2396 2397 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2398 LLVMMetadataRef LLVMDIBuilderCreateUnionType(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNumber, uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, LLVMMetadataRef *Elements, uint NumElements, uint RunTimeLang, const(char)* UniqueId, size_t UniqueIdLen); 2399 } 2400 2401 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2402 LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, uint64_t Size, uint32_t AlignInBits, LLVMMetadataRef Ty, LLVMMetadataRef* Subscripts, uint NumSubscripts); 2403 } 2404 2405 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2406 LLVMMetadataRef LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, uint64_t Size, uint32_t AlignInBits, LLVMMetadataRef Ty, LLVMMetadataRef *Subscripts, uint NumSubscripts); 2407 } 2408 2409 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2410 LLVMMetadataRef LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const(char)* Name, size_t NameLen); 2411 } 2412 2413 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2414 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const(char)* Name, size_t NameLen, uint64_t SizeInBits, LLVMDWARFTypeEncoding Encoding, LLVMDIFlags Flags); 2415 } 2416 else static if (LLVM_Version >= asVersion(7, 0, 0)) { 2417 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const(char)* Name, size_t NameLen, uint64_t SizeInBits, LLVMDWARFTypeEncoding Encoding); 2418 } 2419 2420 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2421 LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy, uint64_t SizeInBits, uint32_t AlignInBits, uint AddressSpace, const(char)* Name, size_t NameLen); 2422 } 2423 2424 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2425 LLVMMetadataRef LLVMDIBuilderCreateStructType( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNumber, uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, LLVMMetadataRef DerivedFrom, LLVMMetadataRef* Elements, uint NumElements, uint RunTimeLang, LLVMMetadataRef VTableHolder, const(char)* UniqueId, size_t UniqueIdLen); 2426 } 2427 2428 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2429 LLVMMetadataRef LLVMDIBuilderCreateMemberType( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNo, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags, LLVMMetadataRef Ty); 2430 } 2431 2432 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2433 LLVMMetadataRef LLVMDIBuilderCreateStaticMemberType(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNumber, LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal, uint32_t AlignInBits); 2434 } 2435 2436 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2437 LLVMMetadataRef LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeType, LLVMMetadataRef ClassType, uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags); 2438 } 2439 2440 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2441 LLVMMetadataRef LLVMDIBuilderCreateObjCIVar(LLVMDIBuilderRef Builder, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNo, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags, LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode); 2442 } 2443 2444 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2445 LLVMMetadataRef LLVMDIBuilderCreateObjCProperty(LLVMDIBuilderRef Builder, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNo, const(char)* GetterName, size_t GetterNameLen, const(char)* SetterName, size_t SetterNameLen, uint PropertyAttributes, LLVMMetadataRef Ty); 2446 } 2447 2448 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2449 LLVMMetadataRef LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type); 2450 } 2451 2452 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2453 LLVMMetadataRef LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, uint Tag, LLVMMetadataRef Type); 2454 } 2455 2456 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2457 LLVMMetadataRef LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, uint Tag, LLVMMetadataRef Type); 2458 } 2459 2460 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2461 LLVMMetadataRef LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder); 2462 } 2463 2464 2465 static if (LLVM_Version >= asVersion(10, 0, 0)) { 2466 LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Scope, uint32_t AlignInBits); 2467 } else static if (LLVM_Version >= asVersion(7, 0, 0)) { 2468 LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Scope); 2469 } 2470 2471 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2472 LLVMMetadataRef LLVMDIBuilderCreateInheritance(LLVMDIBuilderRef Builder, LLVMMetadataRef Ty, LLVMMetadataRef BaseTy, uint64_t BaseOffset, uint32_t VBPtrOffset, LLVMDIFlags Flags); 2473 } 2474 2475 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2476 LLVMMetadataRef LLVMDIBuilderCreateForwardDecl(LLVMDIBuilderRef Builder, uint Tag, const(char)* Name, size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, uint Line, uint RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, const(char)* UniqueIdentifier, size_t UniqueIdentifierLen); 2477 } 2478 2479 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2480 LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(LLVMDIBuilderRef Builder, uint Tag, const(char)* Name, size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, uint Line, uint RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, const(char)* UniqueIdentifier, size_t UniqueIdentifierLen); 2481 } 2482 2483 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2484 LLVMMetadataRef LLVMDIBuilderCreateBitFieldMemberType(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNumber, uint64_t SizeInBits, uint64_t OffsetInBits, uint64_t StorageOffsetInBits, LLVMDIFlags Flags, LLVMMetadataRef Type); 2485 } 2486 2487 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2488 LLVMMetadataRef LLVMDIBuilderCreateClassType(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNumber, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags, LLVMMetadataRef DerivedFrom, LLVMMetadataRef* Elements, uint NumElements, LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode, const(char)* UniqueIdentifier, size_t UniqueIdentifierLen); 2489 } 2490 2491 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2492 LLVMMetadataRef LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder,LLVMMetadataRef Type); 2493 } 2494 2495 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2496 const(char)* LLVMDITypeGetName(LLVMMetadataRef DType, size_t* Length); 2497 } 2498 2499 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2500 uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType); 2501 } 2502 2503 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2504 uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType); 2505 } 2506 2507 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2508 uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType); 2509 } 2510 2511 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2512 uint LLVMDITypeGetLine(LLVMMetadataRef DType); 2513 } 2514 2515 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2516 LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType); 2517 } 2518 2519 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2520 LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Builder, int64_t LowerBound, int64_t Count); 2521 } 2522 2523 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2524 LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder, LLVMMetadataRef* Data, size_t NumElements); 2525 } 2526 2527 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2528 LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Builder, int64_t* Addr, size_t Length); 2529 } 2530 2531 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2532 LLVMMetadataRef LLVMDIBuilderCreateConstantValueExpression(LLVMDIBuilderRef Builder, int64_t Value); 2533 } 2534 2535 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2536 LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, const(char)* Linkage, size_t LinkLen, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits); 2537 } 2538 2539 static if (LLVM_Version >= asVersion(9, 0, 0)) { 2540 LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE); 2541 LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression(LLVMMetadataRef GVE); 2542 LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var); 2543 LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var); 2544 uint LLVMDIVariableGetLine(LLVMMetadataRef Var); 2545 } 2546 2547 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2548 LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef* Data, size_t NumElements); 2549 } 2550 2551 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2552 void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode); 2553 } 2554 2555 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2556 void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata, LLVMMetadataRef Replacement); 2557 } 2558 2559 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2560 LLVMMetadataRef LLVMDIBuilderCreateTempGlobalVariableFwdDecl(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, const(char)* Linkage, size_t LnkLen, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, LLVMMetadataRef Decl, uint32_t AlignInBits); 2561 } 2562 2563 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2564 LLVMValueRef LLVMDIBuilderInsertDeclareBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr); 2565 } 2566 2567 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2568 LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block); 2569 } 2570 2571 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2572 LLVMValueRef LLVMDIBuilderInsertDbgValueBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr); 2573 } 2574 2575 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2576 LLVMValueRef LLVMDIBuilderInsertDbgValueAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block); 2577 } 2578 2579 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2580 LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits); 2581 } 2582 2583 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2584 LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const(char)* Name, size_t NameLen, uint ArgNo, LLVMMetadataRef File, uint LineNo, LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags); 2585 } 2586 2587 static if (LLVM_Version >= asVersion(10, 0, 0)) { 2588 LLVMMetadataRef LLVMDIBuilderCreateMacro(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentMacroFile, uint Line, LLVMDWARFMacinfoRecordType RecordType, const(char)* Name, size_t NameLen, const(char)* Value, size_t ValueLen); 2589 LLVMMetadataRef LLVMDIBuilderCreateTempMacroFile(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentMacroFile, uint Line, LLVMMetadataRef File); 2590 } 2591 2592 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2593 LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func); 2594 } 2595 2596 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2597 void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP); 2598 } 2599 2600 static if (LLVM_Version >= asVersion(9, 0, 0)) { 2601 uint LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram); 2602 LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst); 2603 void LLVMInstructionSetDebugLoc(LLVMValueRef Inst, LLVMMetadataRef Loc); 2604 } 2605 2606 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2607 LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata); 2608 } 2609 2610 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2611 LLVMJITEventListenerRef LLVMCreateGDBRegistrationListener(); 2612 } 2613 2614 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2615 LLVMJITEventListenerRef LLVMCreateOProfileJITEventListener(); 2616 } 2617 2618 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2619 LLVMJITEventListenerRef LLVMCreateIntelJITEventListener(); 2620 } 2621 2622 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2623 LLVMJITEventListenerRef LLVMCreatePerfJITEventListener(); 2624 } 2625 2626 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2627 void LLVMInitializeAggressiveInstCombiner(LLVMPassRegistryRef R); 2628 } 2629 2630 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2631 void LLVMOrcRegisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); 2632 } 2633 2634 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2635 void LLVMOrcUnregisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); 2636 } 2637 2638 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2639 char* LLVMNormalizeTargetTriple(const(char)* triple); 2640 } 2641 2642 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2643 char* LLVMGetHostCPUName(); 2644 } 2645 2646 static if (LLVM_Version >= asVersion(7, 0, 0)) { 2647 char* LLVMGetHostCPUFeatures(); 2648 } 2649 2650 /+ Error +/ 2651 2652 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2653 LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err); 2654 2655 void LLVMConsumeError(LLVMErrorRef Err); 2656 2657 char* LLVMGetErrorMessage(LLVMErrorRef Err); 2658 2659 void LLVMDisposeErrorMessage(char* ErrMsg); 2660 2661 LLVMErrorTypeId LLVMGetStringErrorTypeId(); 2662 } 2663 2664 /+ Aggressive Instruction Combining transformations +/ 2665 2666 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2667 void LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM); 2668 } 2669 2670 /+ Coroutine transformations +/ 2671 2672 static if (LLVM_Version >= asVersion(8, 0, 0)) { 2673 void LLVMAddCoroEarlyPass(LLVMPassManagerRef PM); 2674 2675 void LLVMAddCoroSplitPass(LLVMPassManagerRef PM); 2676 2677 void LLVMAddCoroElidePass(LLVMPassManagerRef PM); 2678 2679 void LLVMAddCoroCleanupPass(LLVMPassManagerRef PM); 2680 } 2681 2682 /+ Remarks / OptRemarks +/ 2683 2684 static if (LLVM_Version >= asVersion(9, 0, 0)) { 2685 const(char)* LLVMRemarkStringGetData(LLVMRemarkStringRef String); 2686 2687 uint32_t LLVMRemarkStringGetLen(LLVMRemarkStringRef String); 2688 2689 LLVMRemarkStringRef LLVMRemarkDebugLocGetSourceFilePath(LLVMRemarkDebugLocRef DL); 2690 2691 uint32_t LLVMRemarkDebugLocGetSourceLine(LLVMRemarkDebugLocRef DL); 2692 2693 uint32_t LLVMRemarkDebugLocGetSourceColumn(LLVMRemarkDebugLocRef DL); 2694 2695 LLVMRemarkStringRef LLVMRemarkArgGetKey(LLVMRemarkArgRef Arg); 2696 2697 LLVMRemarkStringRef LLVMRemarkArgGetValue(LLVMRemarkArgRef Arg); 2698 2699 LLVMRemarkDebugLocRef LLVMRemarkArgGetDebugLoc(LLVMRemarkArgRef Arg); 2700 2701 void LLVMRemarkEntryDispose(LLVMRemarkEntryRef Remark); 2702 2703 LLVMRemarkType LLVMRemarkEntryGetType(LLVMRemarkEntryRef Remark); 2704 2705 LLVMRemarkStringRef LLVMRemarkEntryGetPassName(LLVMRemarkEntryRef Remark); 2706 2707 2708 LLVMRemarkStringRef LLVMRemarkEntryGetRemarkName(LLVMRemarkEntryRef Remark); 2709 2710 LLVMRemarkStringRef LLVMRemarkEntryGetFunctionName(LLVMRemarkEntryRef Remark); 2711 2712 LLVMRemarkDebugLocRef LLVMRemarkEntryGetDebugLoc(LLVMRemarkEntryRef Remark); 2713 2714 uint64_t LLVMRemarkEntryGetHotness(LLVMRemarkEntryRef Remark); 2715 2716 uint32_t LLVMRemarkEntryGetNumArgs(LLVMRemarkEntryRef Remark); 2717 2718 LLVMRemarkArgRef LLVMRemarkEntryGetFirstArg(LLVMRemarkEntryRef Remark); 2719 2720 LLVMRemarkArgRef LLVMRemarkEntryGetNextArg(LLVMRemarkArgRef It, LLVMRemarkEntryRef Remark); 2721 2722 2723 LLVMRemarkParserRef LLVMRemarkParserCreateYAML(const(void)* Buf, uint64_t Size); 2724 2725 static if (LLVM_Version >= asVersion(10, 0, 0)) { 2726 LLVMRemarkParserRef LLVMRemarkParserCreateBitstream(const(void)* Buf, uint64_t Size); 2727 } 2728 2729 LLVMRemarkEntryRef LLVMRemarkParserGetNext(LLVMRemarkParserRef Parser); 2730 2731 LLVMBool LLVMRemarkParserHasError(LLVMRemarkParserRef Parser); 2732 2733 const(char)* LLVMRemarkParserGetErrorMessage(LLVMRemarkParserRef Parser); 2734 2735 void LLVMRemarkParserDispose(LLVMRemarkParserRef Parser); 2736 2737 uint32_t LLVMRemarkVersion(); 2738 2739 } else static if (LLVM_Version >= asVersion(8, 0, 0)) { 2740 LLVMOptRemarkParserRef LLVMOptRemarkParserCreate(const(void)* Buf, uint64_t Size); 2741 2742 LLVMOptRemarkEntry* LLVMOptRemarkParserGetNext(LLVMOptRemarkParserRef Parser); 2743 2744 LLVMBool LLVMOptRemarkParserHasError(LLVMOptRemarkParserRef Parser); 2745 2746 const(char)* LLVMOptRemarkParserGetErrorMessage(LLVMOptRemarkParserRef Parser); 2747 2748 void LLVMOptRemarkParserDispose(LLVMOptRemarkParserRef Parser); 2749 2750 uint32_t LLVMOptRemarkVersion(); 2751 }