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