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