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