diff options
Diffstat (limited to 'llvm')
-rwxr-xr-x | llvm/llvm.h | 1418 | ||||
-rwxr-xr-x | llvm/llvm.nim | 1452 | ||||
-rwxr-xr-x | llvm/llvm.pas | 1034 | ||||
-rwxr-xr-x | llvm/llvm_orig.nim | 1569 |
4 files changed, 0 insertions, 5473 deletions
diff --git a/llvm/llvm.h b/llvm/llvm.h deleted file mode 100755 index a873b44eb..000000000 --- a/llvm/llvm.h +++ /dev/null @@ -1,1418 +0,0 @@ -/* Core.h */ -/* Opaque types. */ - -/** - * The top-level container for all LLVM global data. See the LLVMContext class. - */ -typedef struct LLVMOpaqueContext *LLVMContextRef; - -/** - * The top-level container for all other LLVM Intermediate Representation (IR) - * objects. See the llvm::Module class. - */ -typedef struct LLVMOpaqueModule *LLVMModuleRef; - -/** - * Each value in the LLVM IR has a type, an LLVMTypeRef. See the llvm::Type - * class. - */ -typedef struct LLVMOpaqueType *LLVMTypeRef; - -/** - * When building recursive types using LLVMRefineType, LLVMTypeRef values may - * become invalid; use LLVMTypeHandleRef to resolve this problem. See the - * llvm::AbstractTypeHolder class. - */ -typedef struct LLVMOpaqueTypeHandle *LLVMTypeHandleRef; - -typedef struct LLVMOpaqueValue *LLVMValueRef; -typedef struct LLVMOpaqueBasicBlock *LLVMBasicBlockRef; -typedef struct LLVMOpaqueBuilder *LLVMBuilderRef; - -/* Used to provide a module to JIT or interpreter. - * See the llvm::ModuleProvider class. - */ -typedef struct LLVMOpaqueModuleProvider *LLVMModuleProviderRef; - -/* Used to provide a module to JIT or interpreter. - * See the llvm::MemoryBuffer class. - */ -typedef struct LLVMOpaqueMemoryBuffer *LLVMMemoryBufferRef; - -/** See the llvm::PassManagerBase class. */ -typedef struct LLVMOpaquePassManager *LLVMPassManagerRef; - -/** - * Used to iterate through the uses of a Value, allowing access to all Values - * that use this Value. See the llvm::Use and llvm::value_use_iterator classes. - */ -typedef struct LLVMOpaqueUseIterator *LLVMUseIteratorRef; - -typedef enum { - LLVMZExtAttribute = 1<<0, - LLVMSExtAttribute = 1<<1, - LLVMNoReturnAttribute = 1<<2, - LLVMInRegAttribute = 1<<3, - LLVMStructRetAttribute = 1<<4, - LLVMNoUnwindAttribute = 1<<5, - LLVMNoAliasAttribute = 1<<6, - LLVMByValAttribute = 1<<7, - LLVMNestAttribute = 1<<8, - LLVMReadNoneAttribute = 1<<9, - LLVMReadOnlyAttribute = 1<<10, - LLVMNoInlineAttribute = 1<<11, - LLVMAlwaysInlineAttribute = 1<<12, - LLVMOptimizeForSizeAttribute = 1<<13, - LLVMStackProtectAttribute = 1<<14, - LLVMStackProtectReqAttribute = 1<<15, - LLVMNoCaptureAttribute = 1<<21, - LLVMNoRedZoneAttribute = 1<<22, - LLVMNoImplicitFloatAttribute = 1<<23, - LLVMNakedAttribute = 1<<24, - LLVMInlineHintAttribute = 1<<25 -} LLVMAttribute; - -typedef enum { - LLVMRet = 1, - LLVMBr = 2, - LLVMSwitch = 3, - LLVMInvoke = 4, - LLVMUnwind = 5, - LLVMUnreachable = 6, - LLVMAdd = 7, - LLVMFAdd = 8, - LLVMSub = 9, - LLVMFSub = 10, - LLVMMul = 11, - LLVMFMul = 12, - LLVMUDiv = 13, - LLVMSDiv = 14, - LLVMFDiv = 15, - LLVMURem = 16, - LLVMSRem = 17, - LLVMFRem = 18, - LLVMShl = 19, - LLVMLShr = 20, - LLVMAShr = 21, - LLVMAnd = 22, - LLVMOr = 23, - LLVMXor = 24, - LLVMMalloc = 25, - LLVMFree = 26, - LLVMAlloca = 27, - LLVMLoad = 28, - LLVMStore = 29, - LLVMGetElementPtr = 30, - LLVMTrunk = 31, - LLVMZExt = 32, - LLVMSExt = 33, - LLVMFPToUI = 34, - LLVMFPToSI = 35, - LLVMUIToFP = 36, - LLVMSIToFP = 37, - LLVMFPTrunc = 38, - LLVMFPExt = 39, - LLVMPtrToInt = 40, - LLVMIntToPtr = 41, - LLVMBitCast = 42, - LLVMICmp = 43, - LLVMFCmp = 44, - LLVMPHI = 45, - LLVMCall = 46, - LLVMSelect = 47, - LLVMVAArg = 50, - LLVMExtractElement = 51, - LLVMInsertElement = 52, - LLVMShuffleVector = 53, - LLVMExtractValue = 54, - LLVMInsertValue = 55 -} LLVMOpcode; - -typedef enum { - LLVMVoidTypeKind, /**< type with no size */ - LLVMFloatTypeKind, /**< 32 bit floating point type */ - LLVMDoubleTypeKind, /**< 64 bit floating point type */ - LLVMX86_FP80TypeKind, /**< 80 bit floating point type (X87) */ - LLVMFP128TypeKind, /**< 128 bit floating point type (112-bit mantissa)*/ - LLVMPPC_FP128TypeKind, /**< 128 bit floating point type (two 64-bits) */ - LLVMLabelTypeKind, /**< Labels */ - LLVMIntegerTypeKind, /**< Arbitrary bit width integers */ - LLVMFunctionTypeKind, /**< Functions */ - LLVMStructTypeKind, /**< Structures */ - LLVMArrayTypeKind, /**< Arrays */ - LLVMPointerTypeKind, /**< Pointers */ - LLVMOpaqueTypeKind, /**< Opaque: type with unknown structure */ - LLVMVectorTypeKind, /**< SIMD 'packed' format, or other vector type */ - LLVMMetadataTypeKind /**< Metadata */ -} LLVMTypeKind; - -typedef enum { - LLVMExternalLinkage, /**< Externally visible function */ - LLVMAvailableExternallyLinkage, - LLVMLinkOnceAnyLinkage, /**< Keep one copy of function when linking (inline)*/ - LLVMLinkOnceODRLinkage, /**< Same, but only replaced by something - equivalent. */ - LLVMWeakAnyLinkage, /**< Keep one copy of function when linking (weak) */ - LLVMWeakODRLinkage, /**< Same, but only replaced by something - equivalent. */ - LLVMAppendingLinkage, /**< Special purpose, only applies to global arrays */ - LLVMInternalLinkage, /**< Rename collisions when linking (static - functions) */ - LLVMPrivateLinkage, /**< Like Internal, but omit from symbol table */ - LLVMDLLImportLinkage, /**< Function to be imported from DLL */ - LLVMDLLExportLinkage, /**< Function to be accessible from DLL */ - LLVMExternalWeakLinkage,/**< ExternalWeak linkage description */ - LLVMGhostLinkage, /**< Stand-in functions for streaming fns from - bitcode */ - LLVMCommonLinkage, /**< Tentative definitions */ - LLVMLinkerPrivateLinkage /**< Like Private, but linker removes. */ -} LLVMLinkage; - -typedef enum { - LLVMDefaultVisibility, /**< The GV is visible */ - LLVMHiddenVisibility, /**< The GV is hidden */ - LLVMProtectedVisibility /**< The GV is protected */ -} LLVMVisibility; - -typedef enum { - LLVMCCallConv = 0, - LLVMFastCallConv = 8, - LLVMColdCallConv = 9, - LLVMX86StdcallCallConv = 64, - LLVMX86FastcallCallConv = 65 -} LLVMCallConv; - -typedef enum { - LLVMIntEQ = 32, /**< equal */ - LLVMIntNE, /**< not equal */ - LLVMIntUGT, /**< unsigned greater than */ - LLVMIntUGE, /**< unsigned greater or equal */ - LLVMIntULT, /**< unsigned less than */ - LLVMIntULE, /**< unsigned less or equal */ - LLVMIntSGT, /**< signed greater than */ - LLVMIntSGE, /**< signed greater or equal */ - LLVMIntSLT, /**< signed less than */ - LLVMIntSLE /**< signed less or equal */ -} LLVMIntPredicate; - -typedef enum { - LLVMRealPredicateFalse, /**< Always false (always folded) */ - LLVMRealOEQ, /**< True if ordered and equal */ - LLVMRealOGT, /**< True if ordered and greater than */ - LLVMRealOGE, /**< True if ordered and greater than or equal */ - LLVMRealOLT, /**< True if ordered and less than */ - LLVMRealOLE, /**< True if ordered and less than or equal */ - LLVMRealONE, /**< True if ordered and operands are unequal */ - LLVMRealORD, /**< True if ordered (no nans) */ - LLVMRealUNO, /**< True if unordered: isnan(X) | isnan(Y) */ - LLVMRealUEQ, /**< True if unordered or equal */ - LLVMRealUGT, /**< True if unordered or greater than */ - LLVMRealUGE, /**< True if unordered, greater than, or equal */ - LLVMRealULT, /**< True if unordered or less than */ - LLVMRealULE, /**< True if unordered, less than, or equal */ - LLVMRealUNE, /**< True if unordered or not equal */ - LLVMRealPredicateTrue /**< Always true (always folded) */ -} LLVMRealPredicate; - - -/*===-- Error handling ----------------------------------------------------===*/ - -void LLVMDisposeMessage(char *Message); - - -/*===-- Modules -----------------------------------------------------------===*/ - -/* Create and destroy contexts. */ -LLVMContextRef LLVMContextCreate(void); -LLVMContextRef LLVMGetGlobalContext(void); -void LLVMContextDispose(LLVMContextRef C); - -/* Create and destroy modules. */ -/** See llvm::Module::Module. */ -LLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID); -LLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID, - LLVMContextRef C); - -/** See llvm::Module::~Module. */ -void LLVMDisposeModule(LLVMModuleRef M); - -/** Data layout. See Module::getDataLayout. */ -const char *LLVMGetDataLayout(LLVMModuleRef M); -void LLVMSetDataLayout(LLVMModuleRef M, const char *Triple); - -/** Target triple. See Module::getTargetTriple. */ -const char *LLVMGetTarget(LLVMModuleRef M); -void LLVMSetTarget(LLVMModuleRef M, const char *Triple); - -/** See Module::addTypeName. */ -int LLVMAddTypeName(LLVMModuleRef M, const char *Name, LLVMTypeRef Ty); -void LLVMDeleteTypeName(LLVMModuleRef M, const char *Name); -LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name); - -/** See Module::dump. */ -void LLVMDumpModule(LLVMModuleRef M); - - -/*===-- Types -------------------------------------------------------------===*/ - -/* LLVM types conform to the following hierarchy: - * - * types: - * integer type - * real type - * function type - * sequence types: - * array type - * pointer type - * vector type - * void type - * label type - * opaque type - */ - -/** See llvm::LLVMTypeKind::getTypeID. */ -LLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty); - -/** See llvm::LLVMType::getContext. */ -LLVMContextRef LLVMGetTypeContext(LLVMTypeRef Ty); - -/* Operations on integer types */ -LLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, unsigned NumBits); - -LLVMTypeRef LLVMInt1Type(void); -LLVMTypeRef LLVMInt8Type(void); -LLVMTypeRef LLVMInt16Type(void); -LLVMTypeRef LLVMInt32Type(void); -LLVMTypeRef LLVMInt64Type(void); -LLVMTypeRef LLVMIntType(unsigned NumBits); -unsigned LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy); - -/* Operations on real types */ -LLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMX86FP80TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMFP128TypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMPPCFP128TypeInContext(LLVMContextRef C); - -LLVMTypeRef LLVMFloatType(void); -LLVMTypeRef LLVMDoubleType(void); -LLVMTypeRef LLVMX86FP80Type(void); -LLVMTypeRef LLVMFP128Type(void); -LLVMTypeRef LLVMPPCFP128Type(void); - -/* Operations on function types */ -LLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType, - LLVMTypeRef *ParamTypes, unsigned ParamCount, - int IsVarArg); -int LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy); -LLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy); -unsigned LLVMCountParamTypes(LLVMTypeRef FunctionTy); -void LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef *Dest); - -/* Operations on struct types */ -LLVMTypeRef LLVMStructTypeInContext(LLVMContextRef C, LLVMTypeRef *ElementTypes, - unsigned ElementCount, int Packed); -LLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, unsigned ElementCount, - int Packed); -unsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy); -void LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest); -int LLVMIsPackedStruct(LLVMTypeRef StructTy); - -/* Operations on array, pointer, and vector types (sequence types) */ -LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount); -LLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, unsigned AddressSpace); -LLVMTypeRef LLVMVectorType(LLVMTypeRef ElementType, unsigned ElementCount); - -LLVMTypeRef LLVMGetElementType(LLVMTypeRef Ty); -unsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy); -unsigned LLVMGetPointerAddressSpace(LLVMTypeRef PointerTy); -unsigned LLVMGetVectorSize(LLVMTypeRef VectorTy); - -/* Operations on other types */ -LLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMOpaqueTypeInContext(LLVMContextRef C); - -LLVMTypeRef LLVMVoidType(void); -LLVMTypeRef LLVMLabelType(void); -LLVMTypeRef LLVMOpaqueType(void); - -/* Operations on type handles */ -LLVMTypeHandleRef LLVMCreateTypeHandle(LLVMTypeRef PotentiallyAbstractTy); -void LLVMRefineType(LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy); -LLVMTypeRef LLVMResolveTypeHandle(LLVMTypeHandleRef TypeHandle); -void LLVMDisposeTypeHandle(LLVMTypeHandleRef TypeHandle); - - - -/* Operations on all values */ -LLVMTypeRef LLVMTypeOf(LLVMValueRef Val); -const char *LLVMGetValueName(LLVMValueRef Val); -void LLVMSetValueName(LLVMValueRef Val, const char *Name); -void LLVMDumpValue(LLVMValueRef Val); -void LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal); - -/* Conversion functions. Return the input value if it is an instance of the - specified class, otherwise NULL. See llvm::dyn_cast_or_null<>. */ -LLVMValueRef LLVMIsAArgument(LLVMValueRef Val); -LLVMValueRef LLVMIsABasicBlock(LLVMValueRef Val); -LLVMValueRef LLVMIsAInlineAsm(LLVMValueRef Val); -LLVMValueRef LLVMIsAUser(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstant(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantAggregateZero(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantArray(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantExpr(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantFP(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantInt(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantPointerNull(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantStruct(LLVMValueRef Val); -LLVMValueRef LLVMIsAConstantVector(LLVMValueRef Val); -LLVMValueRef LLVMIsAGlobalValue(LLVMValueRef Val); -LLVMValueRef LLVMIsAFunction(LLVMValueRef Val); -LLVMValueRef LLVMIsAGlobalAlias(LLVMValueRef Val); -LLVMValueRef LLVMIsAGlobalVariable(LLVMValueRef Val); -LLVMValueRef LLVMIsAUndefValue(LLVMValueRef Val); -LLVMValueRef LLVMIsAInstruction(LLVMValueRef Val); -LLVMValueRef LLVMIsABinaryOperator(LLVMValueRef Val); -LLVMValueRef LLVMIsACallInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAIntrinsicInst(LLVMValueRef Val); -LLVMValueRef LLVMIsADbgInfoIntrinsic(LLVMValueRef Val); -LLVMValueRef LLVMIsADbgDeclareInst(LLVMValueRef Val); -LLVMValueRef LLVMIsADbgFuncStartInst(LLVMValueRef Val); -LLVMValueRef LLVMIsADbgRegionEndInst(LLVMValueRef Val); -LLVMValueRef LLVMIsADbgRegionStartInst(LLVMValueRef Val); -LLVMValueRef LLVMIsADbgStopPointInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAEHSelectorInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAMemIntrinsic(LLVMValueRef Val); -LLVMValueRef LLVMIsAMemCpyInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAMemMoveInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAMemSetInst(LLVMValueRef Val); -LLVMValueRef LLVMIsACmpInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAFCmpInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAICmpInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAExtractElementInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAGetElementPtrInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAInsertElementInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAInsertValueInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAPHINode(LLVMValueRef Val); -LLVMValueRef LLVMIsASelectInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAShuffleVectorInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAStoreInst(LLVMValueRef Val); -LLVMValueRef LLVMIsATerminatorInst(LLVMValueRef Val); -LLVMValueRef LLVMIsABranchInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAInvokeInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAReturnInst(LLVMValueRef Val); -LLVMValueRef LLVMIsASwitchInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAUnreachableInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAUnwindInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAUnaryInstruction(LLVMValueRef Val); -LLVMValueRef LLVMIsAAllocationInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAAllocaInst(LLVMValueRef Val); -LLVMValueRef LLVMIsACastInst(LLVMValueRef Val); -LLVMValueRef LLVMIsABitCastInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAFPExtInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAFPToSIInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAFPToUIInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAFPTruncInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAIntToPtrInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAPtrToIntInst(LLVMValueRef Val); -LLVMValueRef LLVMIsASExtInst(LLVMValueRef Val); -LLVMValueRef LLVMIsASIToFPInst(LLVMValueRef Val); -LLVMValueRef LLVMIsATruncInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAUIToFPInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAZExtInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAExtractValueInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAFreeInst(LLVMValueRef Val); -LLVMValueRef LLVMIsALoadInst(LLVMValueRef Val); -LLVMValueRef LLVMIsAVAArgInst(LLVMValueRef Val); - - -/* Operations on Uses */ -LLVMUseIteratorRef LLVMGetFirstUse(LLVMValueRef Val); -LLVMUseIteratorRef LLVMGetNextUse(LLVMUseIteratorRef U); -LLVMValueRef LLVMGetUser(LLVMUseIteratorRef U); -LLVMValueRef LLVMGetUsedValue(LLVMUseIteratorRef U); - -/* Operations on Users */ -LLVMValueRef LLVMGetOperand(LLVMValueRef Val, unsigned Index); - -/* Operations on constants of any type */ -LLVMValueRef LLVMConstNull(LLVMTypeRef Ty); /* all zeroes */ -LLVMValueRef LLVMConstAllOnes(LLVMTypeRef Ty); /* only for int/vector */ -LLVMValueRef LLVMGetUndef(LLVMTypeRef Ty); -int LLVMIsConstant(LLVMValueRef Val); -int LLVMIsNull(LLVMValueRef Val); -int LLVMIsUndef(LLVMValueRef Val); -LLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty); - -/* Operations on scalar constants */ -LLVMValueRef LLVMConstInt(LLVMTypeRef IntTy, unsigned long long N, - int SignExtend); -LLVMValueRef LLVMConstIntOfString(LLVMTypeRef IntTy, const char *Text, - uint8_t Radix); -LLVMValueRef LLVMConstIntOfStringAndSize(LLVMTypeRef IntTy, const char *Text, - unsigned SLen, uint8_t Radix); -LLVMValueRef LLVMConstReal(LLVMTypeRef RealTy, double N); -LLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text); -LLVMValueRef LLVMConstRealOfStringAndSize(LLVMTypeRef RealTy, const char *Text, - unsigned SLen); -unsigned long long LLVMConstIntGetZExtValue(LLVMValueRef ConstantVal); -long long LLVMConstIntGetSExtValue(LLVMValueRef ConstantVal); - - -/* Operations on composite constants */ -LLVMValueRef LLVMConstStringInContext(LLVMContextRef C, const char *Str, - unsigned Length, int DontNullTerminate); -LLVMValueRef LLVMConstStructInContext(LLVMContextRef C, - LLVMValueRef *ConstantVals, - unsigned Count, int Packed); - -LLVMValueRef LLVMConstString(const char *Str, unsigned Length, - int DontNullTerminate); -LLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy, - LLVMValueRef *ConstantVals, unsigned Length); -LLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count, - int Packed); -LLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size); - -/* Constant expressions */ -LLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal); -LLVMValueRef LLVMAlignOf(LLVMTypeRef Ty); -LLVMValueRef LLVMSizeOf(LLVMTypeRef Ty); -LLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal); -LLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal); -LLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal); -LLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate, - LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate, - LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, - LLVMValueRef *ConstantIndices, unsigned NumIndices); -LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, - LLVMValueRef *ConstantIndices, - unsigned NumIndices); -LLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal, - LLVMTypeRef ToType); -LLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal, - LLVMTypeRef ToType); -LLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal, - LLVMTypeRef ToType); -LLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal, - LLVMTypeRef ToType); -LLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType, - unsigned isSigned); -LLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); -LLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition, - LLVMValueRef ConstantIfTrue, - LLVMValueRef ConstantIfFalse); -LLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant, - LLVMValueRef IndexConstant); -LLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant, - LLVMValueRef ElementValueConstant, - LLVMValueRef IndexConstant); -LLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant, - LLVMValueRef VectorBConstant, - LLVMValueRef MaskConstant); -LLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, unsigned *IdxList, - unsigned NumIdx); -LLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant, - LLVMValueRef ElementValueConstant, - unsigned *IdxList, unsigned NumIdx); -LLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, - const char *AsmString, const char *Constraints, - int HasSideEffects); - -/* Operations on global variables, functions, and aliases (globals) */ -LLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global); -int LLVMIsDeclaration(LLVMValueRef Global); -LLVMLinkage LLVMGetLinkage(LLVMValueRef Global); -void LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage); -const char *LLVMGetSection(LLVMValueRef Global); -void LLVMSetSection(LLVMValueRef Global, const char *Section); -LLVMVisibility LLVMGetVisibility(LLVMValueRef Global); -void LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz); -unsigned LLVMGetAlignment(LLVMValueRef Global); -void LLVMSetAlignment(LLVMValueRef Global, unsigned Bytes); - -/* Operations on global variables */ -LLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const char *Name); -LLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const char *Name); -LLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M); -LLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M); -LLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar); -LLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar); -void LLVMDeleteGlobal(LLVMValueRef GlobalVar); -LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar); -void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal); -int LLVMIsThreadLocal(LLVMValueRef GlobalVar); -void LLVMSetThreadLocal(LLVMValueRef GlobalVar, int IsThreadLocal); -int LLVMIsGlobalConstant(LLVMValueRef GlobalVar); -void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, int IsConstant); - -/* Operations on aliases */ -LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, - const char *Name); - -/* Operations on functions */ -LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name, - LLVMTypeRef FunctionTy); -LLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name); -LLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M); -LLVMValueRef LLVMGetLastFunction(LLVMModuleRef M); -LLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn); -LLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn); -void LLVMDeleteFunction(LLVMValueRef Fn); -unsigned LLVMGetIntrinsicID(LLVMValueRef Fn); -unsigned LLVMGetFunctionCallConv(LLVMValueRef Fn); -void LLVMSetFunctionCallConv(LLVMValueRef Fn, unsigned CC); -const char *LLVMGetGC(LLVMValueRef Fn); -void LLVMSetGC(LLVMValueRef Fn, const char *Name); -void LLVMAddFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA); -LLVMAttribute LLVMGetFunctionAttr(LLVMValueRef Fn); -void LLVMRemoveFunctionAttr(LLVMValueRef Fn, LLVMAttribute PA); - -/* Operations on parameters */ -unsigned LLVMCountParams(LLVMValueRef Fn); -void LLVMGetParams(LLVMValueRef Fn, LLVMValueRef *Params); -LLVMValueRef LLVMGetParam(LLVMValueRef Fn, unsigned Index); -LLVMValueRef LLVMGetParamParent(LLVMValueRef Inst); -LLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn); -LLVMValueRef LLVMGetLastParam(LLVMValueRef Fn); -LLVMValueRef LLVMGetNextParam(LLVMValueRef Arg); -LLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg); -void LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA); -void LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA); -LLVMAttribute LLVMGetAttribute(LLVMValueRef Arg); -void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align); - -/* Operations on basic blocks */ -LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB); -int LLVMValueIsBasicBlock(LLVMValueRef Val); -LLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val); -LLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB); -unsigned LLVMCountBasicBlocks(LLVMValueRef Fn); -void LLVMGetBasicBlocks(LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks); -LLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn); -LLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn); -LLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB); -LLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB); -LLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn); - -LLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C, - LLVMValueRef Fn, - const char *Name); -LLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C, - LLVMBasicBlockRef BB, - const char *Name); - -LLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef Fn, const char *Name); -LLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef InsertBeforeBB, - const char *Name); -void LLVMDeleteBasicBlock(LLVMBasicBlockRef BB); - -/* Operations on instructions */ -LLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst); -LLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB); -LLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB); -LLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst); -LLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst); - -/* Operations on call sites */ -void LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC); -unsigned LLVMGetInstructionCallConv(LLVMValueRef Instr); -void LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index, LLVMAttribute); -void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index, - LLVMAttribute); -void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index, - unsigned align); - -/* Operations on call instructions (only) */ -int LLVMIsTailCall(LLVMValueRef CallInst); -void LLVMSetTailCall(LLVMValueRef CallInst, int IsTailCall); - -/* Operations on phi nodes */ -void LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, - LLVMBasicBlockRef *IncomingBlocks, unsigned Count); -unsigned LLVMCountIncoming(LLVMValueRef PhiNode); -LLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, unsigned Index); -LLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index); - -/*===-- Instruction builders ----------------------------------------------===*/ - -/* An instruction builder represents a point within a basic block, and is the - * exclusive means of building instructions using the C interface. - */ - -LLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C); -LLVMBuilderRef LLVMCreateBuilder(void); -void LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, - LLVMValueRef Instr); -void LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr); -void LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block); -LLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder); -void LLVMClearInsertionPosition(LLVMBuilderRef Builder); -void LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr); -void LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr, - const char *Name); -void LLVMDisposeBuilder(LLVMBuilderRef Builder); - -/* Terminators */ -LLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef); -LLVMValueRef LLVMBuildRet(LLVMBuilderRef, LLVMValueRef V); -LLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef, LLVMValueRef *RetVals, - unsigned N); -LLVMValueRef LLVMBuildBr(LLVMBuilderRef, LLVMBasicBlockRef Dest); -LLVMValueRef LLVMBuildCondBr(LLVMBuilderRef, LLVMValueRef If, - LLVMBasicBlockRef Then, LLVMBasicBlockRef Else); -LLVMValueRef LLVMBuildSwitch(LLVMBuilderRef, LLVMValueRef V, - LLVMBasicBlockRef Else, unsigned NumCases); -LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef, LLVMValueRef Fn, - LLVMValueRef *Args, unsigned NumArgs, - LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, - const char *Name); -LLVMValueRef LLVMBuildUnwind(LLVMBuilderRef); -LLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef); - -/* Add a case to the switch instruction */ -void LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal, - LLVMBasicBlockRef Dest); - -/* Arithmetic */ -LLVMValueRef LLVMBuildAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildFAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildFSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildFMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildFDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildURem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildSRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildFRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildShl(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildLShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildAShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildAnd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildOr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildXor(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name); -LLVMValueRef LLVMBuildFNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name); -LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef V, const char *Name); - -/* Memory */ -LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); -LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty, - LLVMValueRef Val, const char *Name); -LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); -LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty, - LLVMValueRef Val, const char *Name); -LLVMValueRef LLVMBuildFree(LLVMBuilderRef, LLVMValueRef PointerVal); -LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef PointerVal, - const char *Name); -LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr); -LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - LLVMValueRef *Indices, unsigned NumIndices, - const char *Name); -LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - LLVMValueRef *Indices, unsigned NumIndices, - const char *Name); -LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - unsigned Idx, const char *Name); -LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str, - const char *Name); -LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, - const char *Name); - -/* Casts */ -LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildZExt(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildSExt(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildFPExt(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildBitCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); -LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val, - LLVMTypeRef DestTy, const char *Name); - -/* Comparisons */ -LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op, - LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); -LLVMValueRef LLVMBuildFCmp(LLVMBuilderRef, LLVMRealPredicate Op, - LLVMValueRef LHS, LLVMValueRef RHS, - const char *Name); - -/* Miscellaneous instructions */ -LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); -LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef Fn, - LLVMValueRef *Args, unsigned NumArgs, - const char *Name); -LLVMValueRef LLVMBuildSelect(LLVMBuilderRef, LLVMValueRef If, - LLVMValueRef Then, LLVMValueRef Else, - const char *Name); -LLVMValueRef LLVMBuildVAArg(LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty, - const char *Name); -LLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef, LLVMValueRef VecVal, - LLVMValueRef Index, const char *Name); -LLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef, LLVMValueRef VecVal, - LLVMValueRef EltVal, LLVMValueRef Index, - const char *Name); -LLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef, LLVMValueRef V1, - LLVMValueRef V2, LLVMValueRef Mask, - const char *Name); -LLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef, LLVMValueRef AggVal, - unsigned Index, const char *Name); -LLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef, LLVMValueRef AggVal, - LLVMValueRef EltVal, unsigned Index, - const char *Name); - -LLVMValueRef LLVMBuildIsNull(LLVMBuilderRef, LLVMValueRef Val, - const char *Name); -LLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef, LLVMValueRef Val, - const char *Name); -LLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef, LLVMValueRef LHS, - LLVMValueRef RHS, const char *Name); - - -/*===-- Module providers --------------------------------------------------===*/ - -/* Encapsulates the module M in a module provider, taking ownership of the - * module. - * See the constructor llvm::ExistingModuleProvider::ExistingModuleProvider. - */ -LLVMModuleProviderRef -LLVMCreateModuleProviderForExistingModule(LLVMModuleRef M); - -/* Destroys the module provider MP as well as the contained module. - * See the destructor llvm::ModuleProvider::~ModuleProvider. - */ -void LLVMDisposeModuleProvider(LLVMModuleProviderRef MP); - - -/*===-- Memory buffers ----------------------------------------------------===*/ - -int LLVMCreateMemoryBufferWithContentsOfFile(const char *Path, - LLVMMemoryBufferRef *OutMemBuf, - char **OutMessage); -int LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef *OutMemBuf, - char **OutMessage); -void LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf); - - -/*===-- Pass Managers -----------------------------------------------------===*/ - -/** Constructs a new whole-module pass pipeline. This type of pipeline is - suitable for link-time optimization and whole-module transformations. - See llvm::PassManager::PassManager. */ -LLVMPassManagerRef LLVMCreatePassManager(void); - -/** Constructs a new function-by-function pass pipeline over the module - provider. It does not take ownership of the module provider. This type of - pipeline is suitable for code generation and JIT compilation tasks. - See llvm::FunctionPassManager::FunctionPassManager. */ -LLVMPassManagerRef LLVMCreateFunctionPassManager(LLVMModuleProviderRef MP); - -/** Initializes, executes on the provided module, and finalizes all of the - passes scheduled in the pass manager. Returns 1 if any of the passes - modified the module, 0 otherwise. See llvm::PassManager::run(Module&). */ -int LLVMRunPassManager(LLVMPassManagerRef PM, LLVMModuleRef M); - -/** Initializes all of the function passes scheduled in the function pass - manager. Returns 1 if any of the passes modified the module, 0 otherwise. - See llvm::FunctionPassManager::doInitialization. */ -int LLVMInitializeFunctionPassManager(LLVMPassManagerRef FPM); - -/** Executes all of the function passes scheduled in the function pass manager - on the provided function. Returns 1 if any of the passes modified the - function, false otherwise. - See llvm::FunctionPassManager::run(Function&). */ -int LLVMRunFunctionPassManager(LLVMPassManagerRef FPM, LLVMValueRef F); - -/** Finalizes all of the function passes scheduled in in the function pass - manager. Returns 1 if any of the passes modified the module, 0 otherwise. - See llvm::FunctionPassManager::doFinalization. */ -int LLVMFinalizeFunctionPassManager(LLVMPassManagerRef FPM); - -/** Frees the memory of a pass pipeline. For function pipelines, does not free - the module provider. - See llvm::PassManagerBase::~PassManagerBase. */ -void LLVMDisposePassManager(LLVMPassManagerRef PM); - - - -/* Analysis.h */ - -typedef enum { - LLVMAbortProcessAction, /* verifier will print to stderr and abort() */ - LLVMPrintMessageAction, /* verifier will print to stderr and return 1 */ - LLVMReturnStatusAction /* verifier will just return 1 */ -} LLVMVerifierFailureAction; - - -/* Verifies that a module is valid, taking the specified action if not. - Optionally returns a human-readable description of any invalid constructs. - OutMessage must be disposed with LLVMDisposeMessage. */ -int LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action, - char **OutMessage); - -/* Verifies that a single function is valid, taking the specified action. Useful - for debugging. */ -int LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action); - -/* Open up a ghostview window that displays the CFG of the current function. - Useful for debugging. */ -void LLVMViewFunctionCFG(LLVMValueRef Fn); -void LLVMViewFunctionCFGOnly(LLVMValueRef Fn); - -/* BitReader.h */ - -/* Builds a module from the bitcode in the specified memory buffer, returning a - reference to the module via the OutModule parameter. Returns 0 on success. - Optionally returns a human-readable error message via OutMessage. */ -int LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, - LLVMModuleRef *OutModule, char **OutMessage); - -int LLVMParseBitcodeInContext(LLVMContextRef ContextRef, - LLVMMemoryBufferRef MemBuf, - LLVMModuleRef *OutModule, char **OutMessage); - -/* Reads a module from the specified path, returning via the OutMP parameter - a module provider which performs lazy deserialization. Returns 0 on success. - Optionally returns a human-readable error message via OutMessage. */ -int LLVMGetBitcodeModuleProvider(LLVMMemoryBufferRef MemBuf, - LLVMModuleProviderRef *OutMP, - char **OutMessage); - -int LLVMGetBitcodeModuleProviderInContext(LLVMContextRef ContextRef, - LLVMMemoryBufferRef MemBuf, - LLVMModuleProviderRef *OutMP, - char **OutMessage); - -/* BitWriter.h */ - -/*===-- Operations on modules ---------------------------------------------===*/ - -/* Writes a module to an open file descriptor. Returns 0 on success. - Closes the Handle. Use dup first if this is not what you want. */ -int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int Handle); - -/* Writes a module to the specified path. Returns 0 on success. */ -int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path); - - -/* Target.h */ - -#define LLVMBigEndian 0 -#define LLVMLittleEndian 1 -typedef int LLVMByteOrdering; - -typedef struct LLVMOpaqueTargetData *LLVMTargetDataRef; -typedef struct LLVMStructLayout *LLVMStructLayoutRef; - -/*===-- Target Data -------------------------------------------------------===*/ - -/** Creates target data from a target layout string. - See the constructor llvm::TargetData::TargetData. */ -LLVMTargetDataRef LLVMCreateTargetData(const char *StringRep); - -/** Adds target data information to a pass manager. This does not take ownership - of the target data. - See the method llvm::PassManagerBase::add. */ -void LLVMAddTargetData(LLVMTargetDataRef, LLVMPassManagerRef); - -/** Converts target data to a target layout string. The string must be disposed - with LLVMDisposeMessage. - See the constructor llvm::TargetData::TargetData. */ -char *LLVMCopyStringRepOfTargetData(LLVMTargetDataRef); - -/** Returns the byte order of a target, either LLVMBigEndian or - LLVMLittleEndian. - See the method llvm::TargetData::isLittleEndian. */ -LLVMByteOrdering LLVMByteOrder(LLVMTargetDataRef); - -/** Returns the pointer size in bytes for a target. - See the method llvm::TargetData::getPointerSize. */ -unsigned LLVMPointerSize(LLVMTargetDataRef); - -/** Returns the integer type that is the same size as a pointer on a target. - See the method llvm::TargetData::getIntPtrType. */ -LLVMTypeRef LLVMIntPtrType(LLVMTargetDataRef); - -/** Computes the size of a type in bytes for a target. - See the method llvm::TargetData::getTypeSizeInBits. */ -unsigned long long LLVMSizeOfTypeInBits(LLVMTargetDataRef, LLVMTypeRef); - -/** Computes the storage size of a type in bytes for a target. - See the method llvm::TargetData::getTypeStoreSize. */ -unsigned long long LLVMStoreSizeOfType(LLVMTargetDataRef, LLVMTypeRef); - -/** Computes the ABI size of a type in bytes for a target. - See the method llvm::TargetData::getTypeAllocSize. */ -unsigned long long LLVMABISizeOfType(LLVMTargetDataRef, LLVMTypeRef); - -/** Computes the ABI alignment of a type in bytes for a target. - See the method llvm::TargetData::getTypeABISize. */ -unsigned LLVMABIAlignmentOfType(LLVMTargetDataRef, LLVMTypeRef); - -/** Computes the call frame alignment of a type in bytes for a target. - See the method llvm::TargetData::getTypeABISize. */ -unsigned LLVMCallFrameAlignmentOfType(LLVMTargetDataRef, LLVMTypeRef); - -/** Computes the preferred alignment of a type in bytes for a target. - See the method llvm::TargetData::getTypeABISize. */ -unsigned LLVMPreferredAlignmentOfType(LLVMTargetDataRef, LLVMTypeRef); - -/** Computes the preferred alignment of a global variable in bytes for a target. - See the method llvm::TargetData::getPreferredAlignment. */ -unsigned LLVMPreferredAlignmentOfGlobal(LLVMTargetDataRef, - LLVMValueRef GlobalVar); - -/** Computes the structure element that contains the byte offset for a target. - See the method llvm::StructLayout::getElementContainingOffset. */ -unsigned LLVMElementAtOffset(LLVMTargetDataRef, LLVMTypeRef StructTy, - unsigned long long Offset); - -/** Computes the byte offset of the indexed struct element for a target. - See the method llvm::StructLayout::getElementContainingOffset. */ -unsigned long long LLVMOffsetOfElement(LLVMTargetDataRef, LLVMTypeRef StructTy, - unsigned Element); - -/** Struct layouts are speculatively cached. If a TargetDataRef is alive when - types are being refined and removed, this method must be called whenever a - struct type is removed to avoid a dangling pointer in this cache. - See the method llvm::TargetData::InvalidateStructLayoutInfo. */ -void LLVMInvalidateStructLayout(LLVMTargetDataRef, LLVMTypeRef StructTy); - -/** Deallocates a TargetData. - See the destructor llvm::TargetData::~TargetData. */ -void LLVMDisposeTargetData(LLVMTargetDataRef); - - -/* ExecutionEngine.h */ -void LLVMLinkInJIT(void); -void LLVMLinkInInterpreter(void); - -typedef struct LLVMOpaqueGenericValue *LLVMGenericValueRef; -typedef struct LLVMOpaqueExecutionEngine *LLVMExecutionEngineRef; - -/*===-- Operations on generic values --------------------------------------===*/ - -LLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty, - unsigned long long N, - int IsSigned); - -LLVMGenericValueRef LLVMCreateGenericValueOfPointer(void *P); - -LLVMGenericValueRef LLVMCreateGenericValueOfFloat(LLVMTypeRef Ty, double N); - -unsigned LLVMGenericValueIntWidth(LLVMGenericValueRef GenValRef); - -unsigned long long LLVMGenericValueToInt(LLVMGenericValueRef GenVal, - int IsSigned); - -void *LLVMGenericValueToPointer(LLVMGenericValueRef GenVal); - -double LLVMGenericValueToFloat(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal); - -void LLVMDisposeGenericValue(LLVMGenericValueRef GenVal); - -/*===-- Operations on execution engines -----------------------------------===*/ - -int LLVMCreateExecutionEngine(LLVMExecutionEngineRef *OutEE, - LLVMModuleProviderRef MP, - char **OutError); - -int LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp, - LLVMModuleProviderRef MP, - char **OutError); - -int LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT, - LLVMModuleProviderRef MP, - unsigned OptLevel, - char **OutError); - -void LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE); - -void LLVMRunStaticConstructors(LLVMExecutionEngineRef EE); - -void LLVMRunStaticDestructors(LLVMExecutionEngineRef EE); - -int LLVMRunFunctionAsMain(LLVMExecutionEngineRef EE, LLVMValueRef F, - unsigned ArgC, const char * const *ArgV, - const char * const *EnvP); - -LLVMGenericValueRef LLVMRunFunction(LLVMExecutionEngineRef EE, LLVMValueRef F, - unsigned NumArgs, - LLVMGenericValueRef *Args); - -void LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F); - -void LLVMAddModuleProvider(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP); - -int LLVMRemoveModuleProvider(LLVMExecutionEngineRef EE, - LLVMModuleProviderRef MP, - LLVMModuleRef *OutMod, char **OutError); - -int LLVMFindFunction(LLVMExecutionEngineRef EE, const char *Name, - LLVMValueRef *OutFn); - -LLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE); - -void LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global, - void* Addr); - -void *LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global); - - -/* LinkTimeOptimizer.h */ -/// This provides a dummy type for pointers to the LTO object. -typedef void* llvm_lto_t; - -/// This provides a C-visible enumerator to manage status codes. -/// This should map exactly onto the C++ enumerator LTOStatus. -typedef enum llvm_lto_status { - LLVM_LTO_UNKNOWN, - LLVM_LTO_OPT_SUCCESS, - LLVM_LTO_READ_SUCCESS, - LLVM_LTO_READ_FAILURE, - LLVM_LTO_WRITE_FAILURE, - LLVM_LTO_NO_TARGET, - LLVM_LTO_NO_WORK, - LLVM_LTO_MODULE_MERGE_FAILURE, - LLVM_LTO_ASM_FAILURE, - - // Added C-specific error codes - LLVM_LTO_NULL_OBJECT -} llvm_lto_status_t; - -/// This provides C interface to initialize link time optimizer. This allows -/// linker to use dlopen() interface to dynamically load LinkTimeOptimizer. -/// extern "C" helps, because dlopen() interface uses name to find the symbol. -extern llvm_lto_t llvm_create_optimizer(void); -extern void llvm_destroy_optimizer(llvm_lto_t lto); - -extern llvm_lto_status_t llvm_read_object_file - (llvm_lto_t lto, const char* input_filename); -extern llvm_lto_status_t llvm_optimize_modules - (llvm_lto_t lto, const char* output_filename); - -/* lto.h */ - -#define LTO_API_VERSION 3 - -typedef enum { - LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, /* log2 of alignment */ - LTO_SYMBOL_PERMISSIONS_MASK = 0x000000E0, - LTO_SYMBOL_PERMISSIONS_CODE = 0x000000A0, - LTO_SYMBOL_PERMISSIONS_DATA = 0x000000C0, - LTO_SYMBOL_PERMISSIONS_RODATA = 0x00000080, - LTO_SYMBOL_DEFINITION_MASK = 0x00000700, - LTO_SYMBOL_DEFINITION_REGULAR = 0x00000100, - LTO_SYMBOL_DEFINITION_TENTATIVE = 0x00000200, - LTO_SYMBOL_DEFINITION_WEAK = 0x00000300, - LTO_SYMBOL_DEFINITION_UNDEFINED = 0x00000400, - LTO_SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500, - LTO_SYMBOL_SCOPE_MASK = 0x00003800, - LTO_SYMBOL_SCOPE_INTERNAL = 0x00000800, - LTO_SYMBOL_SCOPE_HIDDEN = 0x00001000, - LTO_SYMBOL_SCOPE_PROTECTED = 0x00002000, - LTO_SYMBOL_SCOPE_DEFAULT = 0x00001800 -} lto_symbol_attributes; - -typedef enum { - LTO_DEBUG_MODEL_NONE = 0, - LTO_DEBUG_MODEL_DWARF = 1 -} lto_debug_model; - -typedef enum { - LTO_CODEGEN_PIC_MODEL_STATIC = 0, - LTO_CODEGEN_PIC_MODEL_DYNAMIC = 1, - LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2 -} lto_codegen_model; - - -/** opaque reference to a loaded object module */ -typedef struct LTOModule* lto_module_t; - -/** opaque reference to a code generator */ -typedef struct LTOCodeGenerator* lto_code_gen_t; - -/** - * Returns a printable string. - */ -extern const char* -lto_get_version(void); - - -/** - * Returns the last error string or NULL if last operation was sucessful. - */ -extern const char* -lto_get_error_message(void); - -/** - * Checks if a file is a loadable object file. - */ -extern bool -lto_module_is_object_file(const char* path); - - -/** - * Checks if a file is a loadable object compiled for requested target. - */ -extern bool -lto_module_is_object_file_for_target(const char* path, - const char* target_triple_prefix); - - -/** - * Checks if a buffer is a loadable object file. - */ -extern bool -lto_module_is_object_file_in_memory(const void* mem, size_t length); - - -/** - * Checks if a buffer is a loadable object compiled for requested target. - */ -extern bool -lto_module_is_object_file_in_memory_for_target(const void* mem, size_t length, - const char* target_triple_prefix); - - -/** - * Loads an object file from disk. - * Returns NULL on error (check lto_get_error_message() for details). - */ -extern lto_module_t -lto_module_create(const char* path); - - -/** - * Loads an object file from memory. - * Returns NULL on error (check lto_get_error_message() for details). - */ -extern lto_module_t -lto_module_create_from_memory(const void* mem, size_t length); - - -/** - * Frees all memory internally allocated by the module. - * Upon return the lto_module_t is no longer valid. - */ -extern void -lto_module_dispose(lto_module_t mod); - - -/** - * Returns triple string which the object module was compiled under. - */ -extern const char* -lto_module_get_target_triple(lto_module_t mod); - - -/** - * Returns the number of symbols in the object module. - */ -extern unsigned int -lto_module_get_num_symbols(lto_module_t mod); - - -/** - * Returns the name of the ith symbol in the object module. - */ -extern const char* -lto_module_get_symbol_name(lto_module_t mod, unsigned int index); - - -/** - * Returns the attributes of the ith symbol in the object module. - */ -extern lto_symbol_attributes -lto_module_get_symbol_attribute(lto_module_t mod, unsigned int index); - - -/** - * Instantiates a code generator. - * Returns NULL on error (check lto_get_error_message() for details). - */ -extern lto_code_gen_t -lto_codegen_create(void); - - -/** - * Frees all code generator and all memory it internally allocated. - * Upon return the lto_code_gen_t is no longer valid. - */ -extern void -lto_codegen_dispose(lto_code_gen_t); - - - -/** - * Add an object module to the set of modules for which code will be generated. - * Returns true on error (check lto_get_error_message() for details). - */ -extern bool -lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod); - - - -/** - * Sets if debug info should be generated. - * Returns true on error (check lto_get_error_message() for details). - */ -extern bool -lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model); - - -/** - * Sets which PIC code model to generated. - * Returns true on error (check lto_get_error_message() for details). - */ -extern bool -lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model); - - -/** - * Sets the location of the "gcc" to run. If not set, libLTO will search for - * "gcc" on the path. - */ -extern void -lto_codegen_set_gcc_path(lto_code_gen_t cg, const char* path); - - -/** - * Sets the location of the assembler tool to run. If not set, libLTO - * will use gcc to invoke the assembler. - */ -extern void -lto_codegen_set_assembler_path(lto_code_gen_t cg, const char* path); - - -/** - * Adds to a list of all global symbols that must exist in the final - * generated code. If a function is not listed, it might be - * inlined into every usage and optimized away. - */ -extern void -lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char* symbol); - - -/** - * Writes a new object file at the specified path that contains the - * merged contents of all modules added so far. - * Returns true on error (check lto_get_error_message() for details). - */ -extern bool -lto_codegen_write_merged_modules(lto_code_gen_t cg, const char* path); - - -/** - * Generates code for all added modules into one native object file. - * On sucess returns a pointer to a generated mach-o/ELF buffer and - * length set to the buffer size. The buffer is owned by the - * lto_code_gen_t and will be freed when lto_codegen_dispose() - * is called, or lto_codegen_compile() is called again. - * On failure, returns NULL (check lto_get_error_message() for details). - */ -extern const void* -lto_codegen_compile(lto_code_gen_t cg, size_t* length); - - -/** - * Sets options to help debug codegen bugs. - */ -extern void -lto_codegen_debug_options(lto_code_gen_t cg, const char *); - - - - diff --git a/llvm/llvm.nim b/llvm/llvm.nim deleted file mode 100755 index d010457f8..000000000 --- a/llvm/llvm.nim +++ /dev/null @@ -1,1452 +0,0 @@ -const - libname* = "llvm.dll" #Setup as you need - -type - OpaqueContext {.pure.} = object - OpaqueModule {.pure.} = object - TOpaqueType {.pure.} = object - OpaqueTypeHandle {.pure.} = object - OpaqueValue {.pure.} = object - OpaqueBasicBlock {.pure.} = object - OpaqueBuilder {.pure.} = object - OpaqueModuleProvider {.pure.} = object - OpaqueMemoryBuffer {.pure.} = object - OpaquePassManager {.pure.} = object - OpaqueUseIterator {.pure.} = object - - ContextRef* = OpaqueContext - ModuleRef* = OpaqueModule - TypeRef* = TOpaqueType - TypeHandleRef* = OpaqueTypeHandle - ValueRef* = OpaqueValue - BasicBlockRef* = OpaqueBasicBlock - BuilderRef* = OpaqueBuilder - ModuleProviderRef* = OpaqueModuleProvider - MemoryBufferRef* = OpaqueMemoryBuffer - PassManagerRef* = OpaquePassManager - UseIteratorRef* = OpaqueUseIterator - Attribute* = enum - ZExtAttribute = 1 shl 0, SExtAttribute = 1 shl 1, - NoReturnAttribute = 1 shl 2, InRegAttribute = 1 shl 3, - StructRetAttribute = 1 shl 4, NoUnwindAttribute = 1 shl 5, - NoAliasAttribute = 1 shl 6, ByValAttribute = 1 shl 7, - NestAttribute = 1 shl 8, ReadNoneAttribute = 1 shl 9, - ReadOnlyAttribute = 1 shl 10, NoInlineAttribute = 1 shl 11, - AlwaysInlineAttribute = 1 shl 12, OptimizeForSizeAttribute = 1 shl 13, - StackProtectAttribute = 1 shl 14, StackProtectReqAttribute = 1 shl 15, - NoCaptureAttribute = 1 shl 21, NoRedZoneAttribute = 1 shl 22, - NoImplicitFloatAttribute = 1 shl 23, NakedAttribute = 1 shl 24, - InlineHintAttribute = 1 shl 25 - Opcode* = enum - opcRet = 1, opcBr = 2, opcSwitch = 3, opcInvoke = 4, opcUnwind = 5, - opcUnreachable = 6, - opcAdd = 7, opcFAdd = 8, opcSub = 9, opcFSub = 10, opcMul = 11, - opcFMul = 12, opcUDiv = 13, - opcSDiv = 14, opcFDiv = 15, opcURem = 16, opcSRem = 17, opcFRem = 18, - opcShl = 19, - opcLShr = 20, opcAShr = 21, opcAnd = 22, opcOr = 23, opcXor = 24, - opcMalloc = 25, opcFree = 26, opcAlloca = 27, - opcLoad = 28, opcStore = 29, - opcGetElementPtr = 30, opcTrunk = 31, opcZExt = 32, opcSExt = 33, - opcFPToUI = 34, opcFPToSI = 35, opcUIToFP = 36, opcSIToFP = 37, - opcFPTrunc = 38, opcFPExt = 39, opcPtrToInt = 40, opcIntToPtr = 41, - opcBitCast = 42, opcICmp = 43, - opcFCmp = 44, opcPHI = 45, opcCall = 46, opcSelect = 47, opcVAArg = 50, - opcExtractElement = 51, opcInsertElement = 52, opcShuffleVector = 53, - opcExtractValue = 54, opcInsertValue = 55 - TypeKind* = enum - VoidTypeKind, FloatTypeKind, DoubleTypeKind, X86_FP80TypeKind, - FP128TypeKind, PPC_FP128TypeKind, LabelTypeKind, IntegerTypeKind, - FunctionTypeKind, StructTypeKind, ArrayTypeKind, PointerTypeKind, - OpaqueTypeKind, VectorTypeKind, MetadataTypeKind - TLinkage* = enum - ExternalLinkage, ## Externally visible function - AvailableExternallyLinkage, ## Keep one copy of function when linking (inline) - LinkOnceAnyLinkage, ## Same, but only replaced by something equivalent. - LinkOnceODRLinkage, ## Keep one copy of function when linking (weak) - WeakAnyLinkage, ## Same, but only replaced by something equivalent. - WeakODRLinkage, ## Special purpose, only applies to global arrays - AppendingLinkage, ## Rename collisions when linking (static functions) - InternalLinkage, ## - PrivateLinkage, ## Like Internal, but omit from symbol table - DLLImportLinkage, ## Function to be imported from DLL - DLLExportLinkage, ## Function to be accessible from DLL - ExternalWeakLinkage, ## ExternalWeak linkage description - GhostLinkage, ## Stand-in functions for streaming fns from bitcode - CommonLinkage, ## Tentative definitions - LinkerPrivateLinkage ## Like Private, but linker removes. - TVisibility* = enum - DefaultVisibility, - HiddenVisibility, - ProtectedVisibility - TCallConv* = enum - CCallConv = 0, FastCallConv = 8, ColdCallConv = 9, X86StdcallCallConv = 64, - X86FastcallCallConv = 65 - IntPredicate* = enum - IntEQ = 32, IntNE, IntUGT, IntUGE, IntULT, IntULE, IntSGT, IntSGE, IntSLT, - IntSLE - RealPredicate* = enum - RealPredicateFalse, RealOEQ, RealOGT, RealOGE, RealOLT, RealOLE, RealONE, - RealORD, RealUNO, RealUEQ, RealUGT, RealUGE, RealULT, RealULE, RealUNE, - RealPredicateTrue - -#===-- Error handling ----------------------------------------------------=== - -proc DisposeMessage*(Message: cstring){.cdecl, dynlib: libname, - importc: "LLVMDisposeMessage".} - -#===-- Modules -----------------------------------------------------------=== -# Create and destroy contexts. -proc ContextCreate*(): ContextRef{.cdecl, dynlib: libname, - importc: "LLVMContextCreate".} -proc GetGlobalContext*(): ContextRef{.cdecl, dynlib: libname, - importc: "LLVMGetGlobalContext".} -proc ContextDispose*(C: ContextRef){.cdecl, dynlib: libname, - importc: "LLVMContextDispose".} - # Create and destroy modules. - # See llvm::Module::Module. -proc ModuleCreateWithName*(ModuleID: cstring): ModuleRef{.cdecl, - dynlib: libname, importc: "LLVMModuleCreateWithName".} -proc ModuleCreateWithNameInContext*(ModuleID: cstring, C: ContextRef): ModuleRef{. - cdecl, dynlib: libname, importc: "LLVMModuleCreateWithNameInContext".} - # See llvm::Module::~Module. -proc DisposeModule*(M: ModuleRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeModule".} - # Data layout. See Module::getDataLayout. -proc GetDataLayout*(M: ModuleRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetDataLayout".} -proc SetDataLayout*(M: ModuleRef, Triple: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetDataLayout".} - # Target triple. See Module::getTargetTriple. -proc GetTarget*(M: ModuleRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetTarget".} -proc SetTarget*(M: ModuleRef, Triple: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetTarget".} - # See Module::addTypeName. -proc AddTypeName*(M: ModuleRef, Name: cstring, Ty: TypeRef): int32{.cdecl, - dynlib: libname, importc: "LLVMAddTypeName".} -proc DeleteTypeName*(M: ModuleRef, Name: cstring){.cdecl, dynlib: libname, - importc: "LLVMDeleteTypeName".} -proc GetTypeByName*(M: ModuleRef, Name: cstring): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMGetTypeByName".} - # See Module::dump. -proc DumpModule*(M: ModuleRef){.cdecl, dynlib: libname, - importc: "LLVMDumpModule".} - #===-- Types -------------------------------------------------------------=== - # LLVM types conform to the following hierarchy: - # * - # * types: - # * integer type - # * real type - # * function type - # * sequence types: - # * array type - # * pointer type - # * vector type - # * void type - # * label type - # * opaque type - # - # See llvm::LLVMTypeKind::getTypeID. -proc GetTypeKind*(Ty: TypeRef): TypeKind{.cdecl, dynlib: libname, - importc: "LLVMGetTypeKind".} - # See llvm::LLVMType::getContext. -proc GetTypeContext*(Ty: TypeRef): ContextRef{.cdecl, dynlib: libname, - importc: "LLVMGetTypeContext".} - # Operations on integer types -proc Int1TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt1TypeInContext".} -proc Int8TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt8TypeInContext".} -proc Int16TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt16TypeInContext".} -proc Int32TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt32TypeInContext".} -proc Int64TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt64TypeInContext".} -proc IntTypeInContext*(C: ContextRef, NumBits: int32): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMIntTypeInContext".} -proc Int1Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMInt1Type".} -proc Int8Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMInt8Type".} -proc Int16Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMInt16Type".} -proc Int32Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMInt32Type".} -proc Int64Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMInt64Type".} -proc IntType*(NumBits: int32): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMIntType".} -proc GetIntTypeWidth*(IntegerTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetIntTypeWidth".} - # Operations on real types -proc FloatTypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMFloatTypeInContext".} -proc DoubleTypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMDoubleTypeInContext".} -proc X86FP80TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMX86FP80TypeInContext".} -proc FP128TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMFP128TypeInContext".} -proc PPCFP128TypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMPPCFP128TypeInContext".} -proc FloatType*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMFloatType".} -proc DoubleType*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMDoubleType".} -proc X86FP80Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMX86FP80Type".} -proc FP128Type*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMFP128Type".} -proc PPCFP128Type*(): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMPPCFP128Type".} - # Operations on function types -proc FunctionType*(ReturnType: TypeRef, ParamTypes: ptr TypeRef, - ParamCount: int32, IsVarArg: int32): TypeRef {. - cdecl, dynlib: libname, importc: "LLVMFunctionType".} -proc IsFunctionVarArg*(FunctionTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsFunctionVarArg".} -proc GetReturnType*(FunctionTy: TypeRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMGetReturnType".} -proc CountParamTypes*(FunctionTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMCountParamTypes".} -proc GetParamTypes*(FunctionTy: TypeRef, Dest: ptr TypeRef){.cdecl, - dynlib: libname, importc: "LLVMGetParamTypes".} - # Operations on struct types -proc StructTypeInContext*(C: ContextRef, ElementTypes: ptr TypeRef, - ElementCount: int32, isPacked: int32): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMStructTypeInContext".} -proc StructType*(ElementTypes: ptr TypeRef, ElementCount: int32, isPacked: int32): TypeRef{. - cdecl, dynlib: libname, importc: "LLVMStructType".} -proc CountStructElementTypes*(StructTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMCountStructElementTypes".} -proc GetStructElementTypes*(StructTy: TypeRef, Dest: ptr TypeRef){.cdecl, - dynlib: libname, importc: "LLVMGetStructElementTypes".} -proc IsPackedStruct*(StructTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsPackedStruct".} - # Operations on array, pointer, and vector types (sequence types) -proc ArrayType*(ElementType: TypeRef, ElementCount: int32): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMArrayType".} -proc PointerType*(ElementType: TypeRef, AddressSpace: int32): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMPointerType".} -proc VectorType*(ElementType: TypeRef, ElementCount: int32): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMVectorType".} -proc GetElementType*(Ty: TypeRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMGetElementType".} -proc GetArrayLength*(ArrayTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetArrayLength".} -proc GetPointerAddressSpace*(PointerTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetPointerAddressSpace".} -proc GetVectorSize*(VectorTy: TypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetVectorSize".} - # Operations on other types -proc VoidTypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMVoidTypeInContext".} -proc LabelTypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMLabelTypeInContext".} -proc OpaqueTypeInContext*(C: ContextRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMOpaqueTypeInContext".} -proc VoidType*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMVoidType".} -proc LabelType*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMLabelType".} -proc OpaqueType*(): TypeRef{.cdecl, dynlib: libname, importc: "LLVMOpaqueType".} - # Operations on type handles -proc CreateTypeHandle*(PotentiallyAbstractTy: TypeRef): TypeHandleRef{.cdecl, - dynlib: libname, importc: "LLVMCreateTypeHandle".} -proc RefineType*(AbstractTy: TypeRef, ConcreteTy: TypeRef){.cdecl, - dynlib: libname, importc: "LLVMRefineType".} -proc ResolveTypeHandle*(TypeHandle: TypeHandleRef): TypeRef{.cdecl, - dynlib: libname, importc: "LLVMResolveTypeHandle".} -proc DisposeTypeHandle*(TypeHandle: TypeHandleRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeTypeHandle".} - # Operations on all values -proc TypeOf*(Val: ValueRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMTypeOf".} -proc GetValueName*(Val: ValueRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetValueName".} -proc SetValueName*(Val: ValueRef, Name: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetValueName".} -proc DumpValue*(Val: ValueRef){.cdecl, dynlib: libname, importc: "LLVMDumpValue".} -proc ReplaceAllUsesWith*(OldVal: ValueRef, NewVal: ValueRef){.cdecl, - dynlib: libname, importc: "LLVMReplaceAllUsesWith".} - # Conversion functions. Return the input value if it is an instance of the - # specified class, otherwise NULL. See llvm::dyn_cast_or_null<>. -proc IsAArgument*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAArgument".} -proc IsABasicBlock*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsABasicBlock".} -proc IsAInlineAsm*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAInlineAsm".} -proc IsAUser*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUser".} -proc IsAConstant*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstant".} -proc IsAConstantAggregateZero*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantAggregateZero".} -proc IsAConstantArray*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantArray".} -proc IsAConstantExpr*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantExpr".} -proc IsAConstantFP*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantFP".} -proc IsAConstantInt*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantInt".} -proc IsAConstantPointerNull*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantPointerNull".} -proc IsAConstantStruct*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantStruct".} -proc IsAConstantVector*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstantVector".} -proc IsAGlobalValue*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAGlobalValue".} -proc IsAFunction*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFunction".} -proc IsAGlobalAlias*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAGlobalAlias".} -proc IsAGlobalVariable*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAGlobalVariable".} -proc IsAUndefValue*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUndefValue".} -proc IsAInstruction*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAInstruction".} -proc IsABinaryOperator*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsABinaryOperator".} -proc IsACallInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsACallInst".} -proc IsAIntrinsicInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAIntrinsicInst".} -proc IsADbgInfoIntrinsic*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsADbgInfoIntrinsic".} -proc IsADbgDeclareInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsADbgDeclareInst".} -proc IsADbgFuncStartInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsADbgFuncStartInst".} -proc IsADbgRegionEndInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsADbgRegionEndInst".} -proc IsADbgRegionStartInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsADbgRegionStartInst".} -proc IsADbgStopPointInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsADbgStopPointInst".} -proc IsAEHSelectorInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAEHSelectorInst".} -proc IsAMemIntrinsic*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAMemIntrinsic".} -proc IsAMemCpyInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAMemCpyInst".} -proc IsAMemMoveInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAMemMoveInst".} -proc IsAMemSetInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAMemSetInst".} -proc IsACmpInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsACmpInst".} -proc IsAFCmpInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFCmpInst".} -proc IsAICmpInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAICmpInst".} -proc IsAExtractElementInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAExtractElementInst".} -proc IsAGetElementPtrInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAGetElementPtrInst".} -proc IsAInsertElementInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAInsertElementInst".} -proc IsAInsertValueInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAInsertValueInst".} -proc IsAPHINode*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAPHINode".} -proc IsASelectInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsASelectInst".} -proc IsAShuffleVectorInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAShuffleVectorInst".} -proc IsAStoreInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAStoreInst".} -proc IsATerminatorInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsATerminatorInst".} -proc IsABranchInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsABranchInst".} -proc IsAInvokeInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAInvokeInst".} -proc IsAReturnInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAReturnInst".} -proc IsASwitchInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsASwitchInst".} -proc IsAUnreachableInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUnreachableInst".} -proc IsAUnwindInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUnwindInst".} -proc IsAUnaryInstruction*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUnaryInstruction".} -proc IsAAllocationInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAAllocationInst".} -proc IsAAllocaInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAAllocaInst".} -proc IsACastInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsACastInst".} -proc IsABitCastInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsABitCastInst".} -proc IsAFPExtInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFPExtInst".} -proc IsAFPToSIInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFPToSIInst".} -proc IsAFPToUIInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFPToUIInst".} -proc IsAFPTruncInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFPTruncInst".} -proc IsAIntToPtrInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAIntToPtrInst".} -proc IsAPtrToIntInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAPtrToIntInst".} -proc IsASExtInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsASExtInst".} -proc IsASIToFPInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsASIToFPInst".} -proc IsATruncInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsATruncInst".} -proc IsAUIToFPInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUIToFPInst".} -proc IsAZExtInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAZExtInst".} -proc IsAExtractValueInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAExtractValueInst".} -proc IsAFreeInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFreeInst".} -proc IsALoadInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsALoadInst".} -proc IsAVAArgInst*(Val: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAVAArgInst".} - # Operations on Uses -proc GetFirstUse*(Val: ValueRef): UseIteratorRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstUse".} -proc GetNextUse*(U: UseIteratorRef): UseIteratorRef{.cdecl, dynlib: libname, - importc: "LLVMGetNextUse".} -proc GetUser*(U: UseIteratorRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetUser".} -proc GetUsedValue*(U: UseIteratorRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetUsedValue".} - # Operations on Users -proc GetOperand*(Val: ValueRef, Index: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetOperand".} - # Operations on constants of any type -proc ConstNull*(Ty: TypeRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstNull".} - # all zeroes -proc ConstAllOnes*(Ty: TypeRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstAllOnes".} - # only for int/vector -proc GetUndef*(Ty: TypeRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetUndef".} -proc IsConstant*(Val: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsConstant".} -proc IsNull*(Val: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsNull".} -proc IsUndef*(Val: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsUndef".} -proc ConstPointerNull*(Ty: TypeRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstPointerNull".} - # Operations on scalar constants -proc ConstInt*(IntTy: TypeRef, N: int64, SignExtend: int32): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstInt".} -proc ConstIntOfString*(IntTy: TypeRef, Text: cstring, Radix: byte): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstIntOfString".} -proc ConstIntOfStringAndSize*(IntTy: TypeRef, Text: cstring, SLen: int32, - Radix: byte): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstIntOfStringAndSize".} -proc ConstReal*(RealTy: TypeRef, N: float64): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstReal".} -proc ConstRealOfString*(RealTy: TypeRef, Text: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstRealOfString".} -proc ConstRealOfStringAndSize*(RealTy: TypeRef, Text: cstring, SLen: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstRealOfStringAndSize".} -proc ConstIntGetZExtValue*(ConstantVal: ValueRef): int64{.cdecl, - dynlib: libname, importc: "LLVMConstIntGetZExtValue".} -proc ConstIntGetSExtValue*(ConstantVal: ValueRef): int64{.cdecl, - dynlib: libname, importc: "LLVMConstIntGetSExtValue".} - # Operations on composite constants -proc ConstStringInContext*(C: ContextRef, Str: cstring, len: int32, - DontNullTerminate: int32): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstStringInContext".} -proc ConstStructInContext*(C: ContextRef, ConstantVals: ptr ValueRef, - Count: int32, - isPacked: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstStructInContext".} -proc ConstString*(Str: cstring, len: int32, DontNullTerminate: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstString".} -proc ConstArray*(ElementTy: TypeRef, ConstantVals: ptr ValueRef, len: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstArray".} -proc ConstStruct*(ConstantVals: ptr ValueRef, Count: int32, isPacked: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstStruct".} -proc ConstVector*(ScalarConstantVals: ptr ValueRef, Size: int32): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstVector".} - # Constant expressions -proc GetConstOpcode*(ConstantVal: ValueRef): Opcode{.cdecl, dynlib: libname, - importc: "LLVMGetConstOpcode".} -proc AlignOf*(Ty: TypeRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMAlignOf".} -proc SizeOf*(Ty: TypeRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMSizeOf".} -proc ConstNeg*(ConstantVal: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstNeg".} -proc ConstFNeg*(ConstantVal: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstFNeg".} -proc ConstNot*(ConstantVal: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstNot".} -proc ConstAdd*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstAdd".} -proc ConstNSWAdd*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstNSWAdd".} -proc ConstFAdd*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFAdd".} -proc ConstSub*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstSub".} -proc ConstFSub*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFSub".} -proc ConstMul*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstMul".} -proc ConstFMul*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFMul".} -proc ConstUDiv*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstUDiv".} -proc ConstSDiv*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstSDiv".} -proc ConstExactSDiv*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstExactSDiv".} -proc ConstFDiv*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFDiv".} -proc ConstURem*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstURem".} -proc ConstSRem*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstSRem".} -proc ConstFRem*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFRem".} -proc ConstAnd*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstAnd".} -proc ConstOr*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstOr".} -proc ConstXor*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstXor".} -proc ConstICmp*(Predicate: IntPredicate, LHSConstant: ValueRef, - RHSConstant: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstICmp".} -proc ConstFCmp*(Predicate: RealPredicate, LHSConstant: ValueRef, - RHSConstant: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstFCmp".} -proc ConstShl*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstShl".} -proc ConstLShr*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstLShr".} -proc ConstAShr*(LHSConstant: ValueRef, RHSConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstAShr".} -proc ConstGEP*(ConstantVal: ValueRef, ConstantIndices: ptr ValueRef, - NumIndices: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstGEP".} -proc ConstInBoundsGEP*(ConstantVal: ValueRef, ConstantIndices: ptr ValueRef, - NumIndices: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstInBoundsGEP".} -proc ConstTrunc*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstTrunc".} -proc ConstSExt*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstSExt".} -proc ConstZExt*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstZExt".} -proc ConstFPTrunc*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFPTrunc".} -proc ConstFPExt*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFPExt".} -proc ConstUIToFP*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstUIToFP".} -proc ConstSIToFP*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstSIToFP".} -proc ConstFPToUI*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFPToUI".} -proc ConstFPToSI*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFPToSI".} -proc ConstPtrToInt*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstPtrToInt".} -proc ConstIntToPtr*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstIntToPtr".} -proc ConstBitCast*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstBitCast".} -proc ConstZExtOrBitCast*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstZExtOrBitCast".} -proc ConstSExtOrBitCast*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSExtOrBitCast".} -proc ConstTruncOrBitCast*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstTruncOrBitCast".} -proc ConstPointerCast*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstPointerCast".} -proc ConstIntCast*(ConstantVal: ValueRef, ToType: TypeRef, isSigned: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstIntCast".} -proc ConstFPCast*(ConstantVal: ValueRef, ToType: TypeRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFPCast".} -proc ConstSelect*(ConstantCondition: ValueRef, ConstantIfTrue: ValueRef, - ConstantIfFalse: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstSelect".} -proc ConstExtractElement*(VectorConstant: ValueRef, IndexConstant: ValueRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstExtractElement".} -proc ConstInsertElement*(VectorConstant: ValueRef, - ElementValueConstant: ValueRef, IndexConstant: ValueRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstInsertElement".} -proc ConstShuffleVector*(VectorAConstant: ValueRef, VectorBConstant: ValueRef, - MaskConstant: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstShuffleVector".} -proc ConstExtractValue*(AggConstant: ValueRef, IdxList: ptr int32, NumIdx: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstExtractValue".} -proc ConstInsertValue*(AggConstant: ValueRef, ElementValueConstant: ValueRef, - IdxList: ptr int32, NumIdx: int32): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstInsertValue".} -proc ConstInlineAsm*(Ty: TypeRef, AsmString: cstring, Constraints: cstring, - HasSideEffects: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstInlineAsm".} - # Operations on global variables, functions, and aliases (globals) -proc GetGlobalParent*(Global: ValueRef): ModuleRef{.cdecl, dynlib: libname, - importc: "LLVMGetGlobalParent".} -proc IsDeclaration*(Global: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsDeclaration".} -proc GetLinkage*(Global: ValueRef): TLinkage{.cdecl, dynlib: libname, - importc: "LLVMGetLinkage".} -proc SetLinkage*(Global: ValueRef, Linkage: TLinkage){.cdecl, dynlib: libname, - importc: "LLVMSetLinkage".} -proc GetSection*(Global: ValueRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetSection".} -proc SetSection*(Global: ValueRef, Section: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetSection".} -proc GetVisibility*(Global: ValueRef): TVisibility{.cdecl, dynlib: libname, - importc: "LLVMGetVisibility".} -proc SetVisibility*(Global: ValueRef, Viz: TVisibility){.cdecl, dynlib: libname, - importc: "LLVMSetVisibility".} -proc GetAlignment*(Global: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetAlignment".} -proc SetAlignment*(Global: ValueRef, Bytes: int32){.cdecl, dynlib: libname, - importc: "LLVMSetAlignment".} - # Operations on global variables -proc AddGlobal*(M: ModuleRef, Ty: TypeRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMAddGlobal".} -proc GetNamedGlobal*(M: ModuleRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetNamedGlobal".} -proc GetFirstGlobal*(M: ModuleRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstGlobal".} -proc GetLastGlobal*(M: ModuleRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastGlobal".} -proc GetNextGlobal*(GlobalVar: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetNextGlobal".} -proc GetPreviousGlobal*(GlobalVar: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetPreviousGlobal".} -proc DeleteGlobal*(GlobalVar: ValueRef){.cdecl, dynlib: libname, - importc: "LLVMDeleteGlobal".} -proc GetInitializer*(GlobalVar: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetInitializer".} -proc SetInitializer*(GlobalVar: ValueRef, ConstantVal: ValueRef){.cdecl, - dynlib: libname, importc: "LLVMSetInitializer".} -proc IsThreadLocal*(GlobalVar: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsThreadLocal".} -proc SetThreadLocal*(GlobalVar: ValueRef, IsThreadLocal: int32){.cdecl, - dynlib: libname, importc: "LLVMSetThreadLocal".} -proc IsGlobalConstant*(GlobalVar: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsGlobalConstant".} -proc SetGlobalConstant*(GlobalVar: ValueRef, IsConstant: int32){.cdecl, - dynlib: libname, importc: "LLVMSetGlobalConstant".} - # Operations on aliases -proc AddAlias*(M: ModuleRef, Ty: TypeRef, Aliasee: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMAddAlias".} - # Operations on functions -proc AddFunction*(M: ModuleRef, Name: cstring, FunctionTy: TypeRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMAddFunction".} -proc GetNamedFunction*(M: ModuleRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetNamedFunction".} -proc GetFirstFunction*(M: ModuleRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstFunction".} -proc GetLastFunction*(M: ModuleRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastFunction".} -proc GetNextFunction*(Fn: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetNextFunction".} -proc GetPreviousFunction*(Fn: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetPreviousFunction".} -proc DeleteFunction*(Fn: ValueRef){.cdecl, dynlib: libname, - importc: "LLVMDeleteFunction".} -proc GetIntrinsicID*(Fn: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetIntrinsicID".} -proc GetFunctionCallConv*(Fn: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetFunctionCallConv".} -proc SetFunctionCallConv*(Fn: ValueRef, CC: int32){.cdecl, dynlib: libname, - importc: "LLVMSetFunctionCallConv".} -proc GetGC*(Fn: ValueRef): cstring{.cdecl, dynlib: libname, importc: "LLVMGetGC".} -proc SetGC*(Fn: ValueRef, Name: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetGC".} -proc AddFunctionAttr*(Fn: ValueRef, PA: Attribute){.cdecl, dynlib: libname, - importc: "LLVMAddFunctionAttr".} -proc GetFunctionAttr*(Fn: ValueRef): Attribute{.cdecl, dynlib: libname, - importc: "LLVMGetFunctionAttr".} -proc RemoveFunctionAttr*(Fn: ValueRef, PA: Attribute){.cdecl, dynlib: libname, - importc: "LLVMRemoveFunctionAttr".} - # Operations on parameters -proc CountParams*(Fn: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMCountParams".} -proc GetParams*(Fn: ValueRef, Params: ptr ValueRef){.cdecl, dynlib: libname, - importc: "LLVMGetParams".} -proc GetParam*(Fn: ValueRef, Index: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetParam".} -proc GetParamParent*(Inst: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetParamParent".} -proc GetFirstParam*(Fn: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstParam".} -proc GetLastParam*(Fn: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastParam".} -proc GetNextParam*(Arg: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetNextParam".} -proc GetPreviousParam*(Arg: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetPreviousParam".} -proc AddAttribute*(Arg: ValueRef, PA: Attribute){.cdecl, dynlib: libname, - importc: "LLVMAddAttribute".} -proc RemoveAttribute*(Arg: ValueRef, PA: Attribute){.cdecl, dynlib: libname, - importc: "LLVMRemoveAttribute".} -proc GetAttribute*(Arg: ValueRef): Attribute{.cdecl, dynlib: libname, - importc: "LLVMGetAttribute".} -proc SetParamAlignment*(Arg: ValueRef, align: int32){.cdecl, dynlib: libname, - importc: "LLVMSetParamAlignment".} - # Operations on basic blocks -proc BasicBlockAsValue*(BB: BasicBlockRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBasicBlockAsValue".} -proc ValueIsBasicBlock*(Val: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMValueIsBasicBlock".} -proc ValueAsBasicBlock*(Val: ValueRef): BasicBlockRef{.cdecl, dynlib: libname, - importc: "LLVMValueAsBasicBlock".} -proc GetBasicBlockParent*(BB: BasicBlockRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetBasicBlockParent".} -proc CountBasicBlocks*(Fn: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMCountBasicBlocks".} -proc GetBasicBlocks*(Fn: ValueRef, BasicBlocks: ptr BasicBlockRef){.cdecl, - dynlib: libname, importc: "LLVMGetBasicBlocks".} -proc GetFirstBasicBlock*(Fn: ValueRef): BasicBlockRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstBasicBlock".} -proc GetLastBasicBlock*(Fn: ValueRef): BasicBlockRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastBasicBlock".} -proc GetNextBasicBlock*(BB: BasicBlockRef): BasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetNextBasicBlock".} -proc GetPreviousBasicBlock*(BB: BasicBlockRef): BasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetPreviousBasicBlock".} -proc GetEntryBasicBlock*(Fn: ValueRef): BasicBlockRef{.cdecl, dynlib: libname, - importc: "LLVMGetEntryBasicBlock".} -proc AppendBasicBlockInContext*(C: ContextRef, Fn: ValueRef, Name: cstring): BasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMAppendBasicBlockInContext".} -proc InsertBasicBlockInContext*(C: ContextRef, BB: BasicBlockRef, Name: cstring): BasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMInsertBasicBlockInContext".} -proc AppendBasicBlock*(Fn: ValueRef, Name: cstring): BasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMAppendBasicBlock".} -proc InsertBasicBlock*(InsertBeforeBB: BasicBlockRef, Name: cstring): BasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMInsertBasicBlock".} -proc DeleteBasicBlock*(BB: BasicBlockRef){.cdecl, dynlib: libname, - importc: "LLVMDeleteBasicBlock".} - # Operations on instructions -proc GetInstructionParent*(Inst: ValueRef): BasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetInstructionParent".} -proc GetFirstInstruction*(BB: BasicBlockRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstInstruction".} -proc GetLastInstruction*(BB: BasicBlockRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastInstruction".} -proc GetNextInstruction*(Inst: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetNextInstruction".} -proc GetPreviousInstruction*(Inst: ValueRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetPreviousInstruction".} - # Operations on call sites -proc SetInstructionCallConv*(Instr: ValueRef, CC: int32){.cdecl, - dynlib: libname, importc: "LLVMSetInstructionCallConv".} -proc GetInstructionCallConv*(Instr: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMGetInstructionCallConv".} -proc AddInstrAttribute*(Instr: ValueRef, index: int32, para3: Attribute){.cdecl, - dynlib: libname, importc: "LLVMAddInstrAttribute".} -proc RemoveInstrAttribute*(Instr: ValueRef, index: int32, para3: Attribute){. - cdecl, dynlib: libname, importc: "LLVMRemoveInstrAttribute".} -proc SetInstrParamAlignment*(Instr: ValueRef, index: int32, align: int32){. - cdecl, dynlib: libname, importc: "LLVMSetInstrParamAlignment".} - # Operations on call instructions (only) -proc IsTailCall*(CallInst: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsTailCall".} -proc SetTailCall*(CallInst: ValueRef, IsTailCall: int32){.cdecl, - dynlib: libname, importc: "LLVMSetTailCall".} - # Operations on phi nodes -proc AddIncoming*(PhiNode: ValueRef, IncomingValues: ptr ValueRef, - IncomingBlocks: ptr BasicBlockRef, Count: int32){.cdecl, - dynlib: libname, importc: "LLVMAddIncoming".} -proc CountIncoming*(PhiNode: ValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMCountIncoming".} -proc GetIncomingValue*(PhiNode: ValueRef, Index: int32): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetIncomingValue".} -proc GetIncomingBlock*(PhiNode: ValueRef, Index: int32): BasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetIncomingBlock".} - #===-- Instruction builders ----------------------------------------------=== - # An instruction builder represents a point within a basic block, and is the - # * exclusive means of building instructions using the C interface. - # -proc CreateBuilderInContext*(C: ContextRef): BuilderRef{.cdecl, dynlib: libname, - importc: "LLVMCreateBuilderInContext".} -proc CreateBuilder*(): BuilderRef{.cdecl, dynlib: libname, - importc: "LLVMCreateBuilder".} -proc PositionBuilder*(Builder: BuilderRef, theBlock: BasicBlockRef, - Instr: ValueRef){.cdecl, dynlib: libname, - importc: "LLVMPositionBuilder".} -proc PositionBuilderBefore*(Builder: BuilderRef, Instr: ValueRef){.cdecl, - dynlib: libname, importc: "LLVMPositionBuilderBefore".} -proc PositionBuilderAtEnd*(Builder: BuilderRef, theBlock: BasicBlockRef){.cdecl, - dynlib: libname, importc: "LLVMPositionBuilderAtEnd".} -proc GetInsertBlock*(Builder: BuilderRef): BasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetInsertBlock".} -proc ClearInsertionPosition*(Builder: BuilderRef){.cdecl, dynlib: libname, - importc: "LLVMClearInsertionPosition".} -proc InsertIntoBuilder*(Builder: BuilderRef, Instr: ValueRef){.cdecl, - dynlib: libname, importc: "LLVMInsertIntoBuilder".} -proc InsertIntoBuilderWithName*(Builder: BuilderRef, Instr: ValueRef, - Name: cstring){.cdecl, dynlib: libname, - importc: "LLVMInsertIntoBuilderWithName".} -proc DisposeBuilder*(Builder: BuilderRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeBuilder".} - # Terminators -proc BuildRetVoid*(para1: BuilderRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildRetVoid".} -proc BuildRet*(para1: BuilderRef, V: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildRet".} -proc BuildAggregateRet*(para1: BuilderRef, RetVals: ptr ValueRef, N: int32): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildAggregateRet".} -proc BuildBr*(para1: BuilderRef, Dest: BasicBlockRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildBr".} -proc BuildCondBr*(para1: BuilderRef, Cond: ValueRef, ThenBranch: BasicBlockRef, - ElseBranch: BasicBlockRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildCondBr".} -proc BuildSwitch*(para1: BuilderRef, V: ValueRef, ElseBranch: BasicBlockRef, - NumCases: int32): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSwitch".} -proc BuildInvoke*(para1: BuilderRef, Fn: ValueRef, Args: ptr ValueRef, - NumArgs: int32, ThenBranch: BasicBlockRef, - Catch: BasicBlockRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildInvoke".} -proc BuildUnwind*(para1: BuilderRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildUnwind".} -proc BuildUnreachable*(para1: BuilderRef): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildUnreachable".} - # Add a case to the switch instruction -proc AddCase*(Switch: ValueRef, OnVal: ValueRef, Dest: BasicBlockRef){.cdecl, - dynlib: libname, importc: "LLVMAddCase".} - # Arithmetic -proc BuildAdd*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildAdd".} -proc BuildNSWAdd*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildNSWAdd".} -proc BuildFAdd*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFAdd".} -proc BuildSub*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildSub".} -proc BuildFSub*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFSub".} -proc BuildMul*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildMul".} -proc BuildFMul*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFMul".} -proc BuildUDiv*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildUDiv".} -proc BuildSDiv*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildSDiv".} -proc BuildExactSDiv*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildExactSDiv".} -proc BuildFDiv*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFDiv".} -proc BuildURem*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildURem".} -proc BuildSRem*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildSRem".} -proc BuildFRem*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFRem".} -proc BuildShl*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildShl".} -proc BuildLShr*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildLShr".} -proc BuildAShr*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildAShr".} -proc BuildAnd*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildAnd".} -proc BuildOr*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildOr".} -proc BuildXor*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildXor".} -proc BuildNeg*(para1: BuilderRef, V: ValueRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildNeg".} -proc BuildFNeg*(para1: BuilderRef, V: ValueRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFNeg".} -proc BuildNot*(para1: BuilderRef, V: ValueRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildNot".} - # Memory -proc BuildMalloc*(para1: BuilderRef, Ty: TypeRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildMalloc".} -proc BuildArrayMalloc*(para1: BuilderRef, Ty: TypeRef, Val: ValueRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildArrayMalloc".} -proc BuildAlloca*(para1: BuilderRef, Ty: TypeRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildAlloca".} -proc BuildArrayAlloca*(para1: BuilderRef, Ty: TypeRef, Val: ValueRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildArrayAlloca".} -proc BuildFree*(para1: BuilderRef, PointerVal: ValueRef): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFree".} -proc BuildLoad*(para1: BuilderRef, PointerVal: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildLoad".} -proc BuildStore*(para1: BuilderRef, Val: ValueRef, thePtr: ValueRef): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildStore".} -proc BuildGEP*(B: BuilderRef, Pointer: ValueRef, Indices: ptr ValueRef, - NumIndices: int32, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildGEP".} -proc BuildInBoundsGEP*(B: BuilderRef, Pointer: ValueRef, Indices: ptr ValueRef, - NumIndices: int32, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildInBoundsGEP".} -proc BuildStructGEP*(B: BuilderRef, Pointer: ValueRef, Idx: int32, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildStructGEP".} -proc BuildGlobalString*(B: BuilderRef, Str: cstring, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildGlobalString".} -proc BuildGlobalStringPtr*(B: BuilderRef, Str: cstring, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildGlobalStringPtr".} - # Casts -proc BuildTrunc*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildTrunc".} -proc BuildZExt*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildZExt".} -proc BuildSExt*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildSExt".} -proc BuildFPToUI*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFPToUI".} -proc BuildFPToSI*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFPToSI".} -proc BuildUIToFP*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildUIToFP".} -proc BuildSIToFP*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSIToFP".} -proc BuildFPTrunc*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFPTrunc".} -proc BuildFPExt*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFPExt".} -proc BuildPtrToInt*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildPtrToInt".} -proc BuildIntToPtr*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildIntToPtr".} -proc BuildBitCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildBitCast".} -proc BuildZExtOrBitCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildZExtOrBitCast".} -proc BuildSExtOrBitCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSExtOrBitCast".} -proc BuildTruncOrBitCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildTruncOrBitCast".} -proc BuildPointerCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildPointerCast".} -proc BuildIntCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildIntCast".} -proc BuildFPCast*(para1: BuilderRef, Val: ValueRef, DestTy: TypeRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFPCast".} - # Comparisons -proc BuildICmp*(para1: BuilderRef, Op: IntPredicate, LHS: ValueRef, - RHS: ValueRef, Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildICmp".} -proc BuildFCmp*(para1: BuilderRef, Op: RealPredicate, LHS: ValueRef, - RHS: ValueRef, Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFCmp".} - # Miscellaneous instructions -proc BuildPhi*(para1: BuilderRef, Ty: TypeRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildPhi".} -proc BuildCall*(para1: BuilderRef, Fn: ValueRef, Args: ptr ValueRef, - NumArgs: int32, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildCall".} -proc BuildSelect*(para1: BuilderRef, Cond: ValueRef, ThenBranch: ValueRef, - ElseBranch: ValueRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildSelect".} -proc BuildVAArg*(para1: BuilderRef, List: ValueRef, Ty: TypeRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildVAArg".} -proc BuildExtractElement*(para1: BuilderRef, VecVal: ValueRef, Index: ValueRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildExtractElement".} -proc BuildInsertElement*(para1: BuilderRef, VecVal: ValueRef, EltVal: ValueRef, - Index: ValueRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildInsertElement".} -proc BuildShuffleVector*(para1: BuilderRef, V1: ValueRef, V2: ValueRef, - Mask: ValueRef, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildShuffleVector".} -proc BuildExtractValue*(para1: BuilderRef, AggVal: ValueRef, Index: int32, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildExtractValue".} -proc BuildInsertValue*(para1: BuilderRef, AggVal: ValueRef, EltVal: ValueRef, - Index: int32, Name: cstring): ValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildInsertValue".} -proc BuildIsNull*(para1: BuilderRef, Val: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildIsNull".} -proc BuildIsNotNull*(para1: BuilderRef, Val: ValueRef, Name: cstring): ValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildIsNotNull".} -proc BuildPtrDiff*(para1: BuilderRef, LHS: ValueRef, RHS: ValueRef, - Name: cstring): ValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildPtrDiff".} - #===-- Module providers --------------------------------------------------=== - # Encapsulates the module M in a module provider, taking ownership of the - # module. - # See the constructor llvm::ExistingModuleProvider::ExistingModuleProvider. - # -proc CreateModuleProviderForExistingModule*(M: ModuleRef): ModuleProviderRef{. - cdecl, dynlib: libname, importc: "LLVMCreateModuleProviderForExistingModule".} - # Destroys the module provider MP as well as the contained module. - # See the destructor llvm::ModuleProvider::~ModuleProvider. - # -proc DisposeModuleProvider*(MP: ModuleProviderRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeModuleProvider".} - #===-- Memory buffers ----------------------------------------------------=== -proc CreateMemoryBufferWithContentsOfFile*(Path: cstring, - OutMemBuf: ptr MemoryBufferRef, OutMessage: var cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMCreateMemoryBufferWithContentsOfFile".} -proc CreateMemoryBufferWithSTDIN*(OutMemBuf: ptr MemoryBufferRef, - OutMessage: var cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMCreateMemoryBufferWithSTDIN".} -proc DisposeMemoryBuffer*(MemBuf: MemoryBufferRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeMemoryBuffer".} - #===-- Pass Managers -----------------------------------------------------=== - # Constructs a new whole-module pass pipeline. This type of pipeline is - # suitable for link-time optimization and whole-module transformations. - # See llvm::PassManager::PassManager. -proc CreatePassManager*(): PassManagerRef{.cdecl, dynlib: libname, - importc: "LLVMCreatePassManager".} - # Constructs a new function-by-function pass pipeline over the module - # provider. It does not take ownership of the module provider. This type of - # pipeline is suitable for code generation and JIT compilation tasks. - # See llvm::FunctionPassManager::FunctionPassManager. -proc CreateFunctionPassManager*(MP: ModuleProviderRef): PassManagerRef{.cdecl, - dynlib: libname, importc: "LLVMCreateFunctionPassManager".} - # Initializes, executes on the provided module, and finalizes all of the - # passes scheduled in the pass manager. Returns 1 if any of the passes - # modified the module, 0 otherwise. See llvm::PassManager::run(Module&). -proc RunPassManager*(PM: PassManagerRef, M: ModuleRef): int32{.cdecl, - dynlib: libname, importc: "LLVMRunPassManager".} - # Initializes all of the function passes scheduled in the function pass - # manager. Returns 1 if any of the passes modified the module, 0 otherwise. - # See llvm::FunctionPassManager::doInitialization. -proc InitializeFunctionPassManager*(FPM: PassManagerRef): int32{.cdecl, - dynlib: libname, importc: "LLVMInitializeFunctionPassManager".} - # Executes all of the function passes scheduled in the function pass manager - # on the provided function. Returns 1 if any of the passes modified the - # function, false otherwise. - # See llvm::FunctionPassManager::run(Function&). -proc RunFunctionPassManager*(FPM: PassManagerRef, F: ValueRef): int32{.cdecl, - dynlib: libname, importc: "LLVMRunFunctionPassManager".} - # Finalizes all of the function passes scheduled in in the function pass - # manager. Returns 1 if any of the passes modified the module, 0 otherwise. - # See llvm::FunctionPassManager::doFinalization. -proc FinalizeFunctionPassManager*(FPM: PassManagerRef): int32{.cdecl, - dynlib: libname, importc: "LLVMFinalizeFunctionPassManager".} - # Frees the memory of a pass pipeline. For function pipelines, does not free - # the module provider. - # See llvm::PassManagerBase::~PassManagerBase. -proc DisposePassManager*(PM: PassManagerRef){.cdecl, dynlib: libname, - importc: "LLVMDisposePassManager".} - # Analysis.h - # verifier will print to stderr and abort() - # verifier will print to stderr and return 1 - # verifier will just return 1 -type - VerifierFailureAction* = enum # Verifies that a module is valid, taking the specified action if not. - # Optionally returns a human-readable description of any invalid constructs. - # OutMessage must be disposed with LLVMDisposeMessage. - AbortProcessAction, PrintMessageAction, ReturnStatusAction - -proc VerifyModule*(M: ModuleRef, Action: VerifierFailureAction, - OutMessage: var cstring): int32{.cdecl, dynlib: libname, - importc: "LLVMVerifyModule".} - # Verifies that a single function is valid, taking the specified action. Useful - # for debugging. -proc VerifyFunction*(Fn: ValueRef, Action: VerifierFailureAction): int32{.cdecl, - dynlib: libname, importc: "LLVMVerifyFunction".} - # Open up a ghostview window that displays the CFG of the current function. - # Useful for debugging. -proc ViewFunctionCFG*(Fn: ValueRef){.cdecl, dynlib: libname, - importc: "LLVMViewFunctionCFG".} -proc ViewFunctionCFGOnly*(Fn: ValueRef){.cdecl, dynlib: libname, - importc: "LLVMViewFunctionCFGOnly".} - # BitReader.h - # Builds a module from the bitcode in the specified memory buffer, returning a - # reference to the module via the OutModule parameter. Returns 0 on success. - # Optionally returns a human-readable error message via OutMessage. -proc ParseBitcode*(MemBuf: MemoryBufferRef, OutModule: var ModuleRef, - OutMessage: var cstring): int32{.cdecl, dynlib: libname, - importc: "LLVMParseBitcode".} -proc ParseBitcodeInContext*(ContextRef: ContextRef, MemBuf: MemoryBufferRef, - OutModule: var ModuleRef, OutMessage: var cstring): int32{. - cdecl, dynlib: libname, importc: "LLVMParseBitcodeInContext".} - # Reads a module from the specified path, returning via the OutMP parameter - # a module provider which performs lazy deserialization. Returns 0 on success. - # Optionally returns a human-readable error message via OutMessage. -proc GetBitcodeModuleProvider*(MemBuf: MemoryBufferRef, - OutMP: var ModuleProviderRef, - OutMessage: var cstring): int32{. - cdecl, dynlib: libname, importc: "LLVMGetBitcodeModuleProvider".} -proc GetBitcodeModuleProviderInContext*(ContextRef: ContextRef, - MemBuf: MemoryBufferRef, - OutMP: var ModuleProviderRef, - OutMessage: var cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMGetBitcodeModuleProviderInContext".} - # BitWriter.h - #===-- Operations on modules ---------------------------------------------=== - # Writes a module to an open file descriptor. Returns 0 on success. - # Closes the Handle. Use dup first if this is not what you want. -proc WriteBitcodeToFileHandle*(M: ModuleRef, Handle: int32): int32{.cdecl, - dynlib: libname, importc: "LLVMWriteBitcodeToFileHandle".} - # Writes a module to the specified path. Returns 0 on success. -proc WriteBitcodeToFile*(M: ModuleRef, Path: cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMWriteBitcodeToFile".} - # Target.h -const - BigEndian* = 0 - LittleEndian* = 1 - -type - ByteOrdering* = int32 - OpaqueTargetData {.pure} = object - StructLayout {.pure} = object - TargetDataRef* = ref OpaqueTargetData - StructLayoutRef* = ref StructLayout - - -#===-- Target Data -------------------------------------------------------=== -# Creates target data from a target layout string. -# See the constructor llvm::TargetData::TargetData. - -proc CreateTargetData*(StringRep: cstring): TargetDataRef{.cdecl, - dynlib: libname, importc: "LLVMCreateTargetData".} - # Adds target data information to a pass manager. This does not take ownership - # of the target data. - # See the method llvm::PassManagerBase::add. -proc AddTargetData*(para1: TargetDataRef, para2: PassManagerRef){.cdecl, - dynlib: libname, importc: "LLVMAddTargetData".} - # Converts target data to a target layout string. The string must be disposed - # with LLVMDisposeMessage. - # See the constructor llvm::TargetData::TargetData. -proc CopyStringRepOfTargetData*(para1: TargetDataRef): cstring{.cdecl, - dynlib: libname, importc: "LLVMCopyStringRepOfTargetData".} - # Returns the byte order of a target, either LLVMBigEndian or - # LLVMLittleEndian. - # See the method llvm::TargetData::isLittleEndian. -proc ByteOrder*(para1: TargetDataRef): ByteOrdering{.cdecl, dynlib: libname, - importc: "LLVMByteOrder".} - # Returns the pointer size in bytes for a target. - # See the method llvm::TargetData::getPointerSize. -proc PointerSize*(para1: TargetDataRef): int32{.cdecl, dynlib: libname, - importc: "LLVMPointerSize".} - # Returns the integer type that is the same size as a pointer on a target. - # See the method llvm::TargetData::getIntPtrType. -proc IntPtrType*(para1: TargetDataRef): TypeRef{.cdecl, dynlib: libname, - importc: "LLVMIntPtrType".} - # Computes the size of a type in bytes for a target. - # See the method llvm::TargetData::getTypeSizeInBits. -proc SizeOfTypeInBits*(para1: TargetDataRef, para2: TypeRef): int64{.cdecl, - dynlib: libname, importc: "LLVMSizeOfTypeInBits".} - # Computes the storage size of a type in bytes for a target. - # See the method llvm::TargetData::getTypeStoreSize. -proc StoreSizeOfType*(para1: TargetDataRef, para2: TypeRef): int64{.cdecl, - dynlib: libname, importc: "LLVMStoreSizeOfType".} - # Computes the ABI size of a type in bytes for a target. - # See the method llvm::TargetData::getTypeAllocSize. -proc ABISizeOfType*(para1: TargetDataRef, para2: TypeRef): int64{.cdecl, - dynlib: libname, importc: "LLVMABISizeOfType".} - # Computes the ABI alignment of a type in bytes for a target. - # See the method llvm::TargetData::getTypeABISize. -proc ABIAlignmentOfType*(para1: TargetDataRef, para2: TypeRef): int32{.cdecl, - dynlib: libname, importc: "LLVMABIAlignmentOfType".} - # Computes the call frame alignment of a type in bytes for a target. - # See the method llvm::TargetData::getTypeABISize. -proc CallFrameAlignmentOfType*(para1: TargetDataRef, para2: TypeRef): int32{. - cdecl, dynlib: libname, importc: "LLVMCallFrameAlignmentOfType".} - # Computes the preferred alignment of a type in bytes for a target. - # See the method llvm::TargetData::getTypeABISize. -proc PreferredAlignmentOfType*(para1: TargetDataRef, para2: TypeRef): int32{. - cdecl, dynlib: libname, importc: "LLVMPreferredAlignmentOfType".} - # Computes the preferred alignment of a global variable in bytes for a target. - # See the method llvm::TargetData::getPreferredAlignment. -proc PreferredAlignmentOfGlobal*(para1: TargetDataRef, GlobalVar: ValueRef): int32{. - cdecl, dynlib: libname, importc: "LLVMPreferredAlignmentOfGlobal".} - # Computes the structure element that contains the byte offset for a target. - # See the method llvm::StructLayout::getElementContainingOffset. -proc ElementAtOffset*(para1: TargetDataRef, StructTy: TypeRef, Offset: int64): int32{. - cdecl, dynlib: libname, importc: "LLVMElementAtOffset".} - # Computes the byte offset of the indexed struct element for a target. - # See the method llvm::StructLayout::getElementContainingOffset. -proc OffsetOfElement*(para1: TargetDataRef, StructTy: TypeRef, Element: int32): int64{. - cdecl, dynlib: libname, importc: "LLVMOffsetOfElement".} - # Struct layouts are speculatively cached. If a TargetDataRef is alive when - # types are being refined and removed, this method must be called whenever a - # struct type is removed to avoid a dangling pointer in this cache. - # See the method llvm::TargetData::InvalidateStructLayoutInfo. -proc InvalidateStructLayout*(para1: TargetDataRef, StructTy: TypeRef){.cdecl, - dynlib: libname, importc: "LLVMInvalidateStructLayout".} - # Deallocates a TargetData. - # See the destructor llvm::TargetData::~TargetData. -proc DisposeTargetData*(para1: TargetDataRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeTargetData".} - # ExecutionEngine.h -proc LinkInJIT*(){.cdecl, dynlib: libname, importc: "LLVMLinkInJIT".} -proc LinkInInterpreter*(){.cdecl, dynlib: libname, - importc: "LLVMLinkInInterpreter".} -type - OpaqueGenericValue {.pure} = object - OpaqueExecutionEngine {.pure} = object - GenericValueRef* = OpaqueGenericValue - ExecutionEngineRef* = OpaqueExecutionEngine - -#===-- Operations on generic values --------------------------------------=== - -proc CreateGenericValueOfInt*(Ty: TypeRef, N: int64, IsSigned: int32): GenericValueRef{. - cdecl, dynlib: libname, importc: "LLVMCreateGenericValueOfInt".} -proc CreateGenericValueOfPointer*(P: pointer): GenericValueRef{.cdecl, - dynlib: libname, importc: "LLVMCreateGenericValueOfPointer".} -proc CreateGenericValueOfFloat*(Ty: TypeRef, N: float64): GenericValueRef{. - cdecl, dynlib: libname, importc: "LLVMCreateGenericValueOfFloat".} -proc GenericValueIntWidth*(GenValRef: GenericValueRef): int32{.cdecl, - dynlib: libname, importc: "LLVMGenericValueIntWidth".} -proc GenericValueToInt*(GenVal: GenericValueRef, IsSigned: int32): int64{.cdecl, - dynlib: libname, importc: "LLVMGenericValueToInt".} -proc GenericValueToPointer*(GenVal: GenericValueRef): pointer{.cdecl, - dynlib: libname, importc: "LLVMGenericValueToPointer".} -proc GenericValueToFloat*(TyRef: TypeRef, GenVal: GenericValueRef): float64{. - cdecl, dynlib: libname, importc: "LLVMGenericValueToFloat".} -proc DisposeGenericValue*(GenVal: GenericValueRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeGenericValue".} - -#===-- Operations on execution engines -----------------------------------=== -proc CreateExecutionEngine*(OutEE: var ExecutionEngineRef, MP: ModuleProviderRef, - OutError: var cstring): int32{.cdecl, dynlib: libname, - importc: "LLVMCreateExecutionEngine".} -proc CreateInterpreter*(OutInterp: var ExecutionEngineRef, MP: ModuleProviderRef, - OutError: var cstring): int32{.cdecl, dynlib: libname, - importc: "LLVMCreateInterpreter".} -proc CreateJITCompiler*(OutJIT: var ExecutionEngineRef, MP: ModuleProviderRef, - OptLevel: int32, OutError: var cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMCreateJITCompiler".} -proc DisposeExecutionEngine*(EE: ExecutionEngineRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeExecutionEngine".} -proc RunStaticConstructors*(EE: ExecutionEngineRef){.cdecl, dynlib: libname, - importc: "LLVMRunStaticConstructors".} -proc RunStaticDestructors*(EE: ExecutionEngineRef){.cdecl, dynlib: libname, - importc: "LLVMRunStaticDestructors".} - -proc RunFunctionAsMain*(EE: ExecutionEngineRef, F: ValueRef, ArgC: int32, - ArgV: cstringArray, EnvP: cstringArray): int32{.cdecl, - dynlib: libname, importc: "LLVMRunFunctionAsMain".} -proc RunFunction*(EE: ExecutionEngineRef, F: ValueRef, NumArgs: int32, - Args: ptr GenericValueRef): GenericValueRef{.cdecl, - dynlib: libname, importc: "LLVMRunFunction".} -proc FreeMachineCodeForFunction*(EE: ExecutionEngineRef, F: ValueRef){.cdecl, - dynlib: libname, importc: "LLVMFreeMachineCodeForFunction".} -proc AddModuleProvider*(EE: ExecutionEngineRef, MP: ModuleProviderRef){.cdecl, - dynlib: libname, importc: "LLVMAddModuleProvider".} -proc RemoveModuleProvider*(EE: ExecutionEngineRef, MP: ModuleProviderRef, - OutMod: var ModuleRef, OutError: var cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMRemoveModuleProvider".} -proc FindFunction*(EE: ExecutionEngineRef, Name: cstring, OutFn: var ValueRef): int32{. - cdecl, dynlib: libname, importc: "LLVMFindFunction".} -proc GetExecutionEngineTargetData*(EE: ExecutionEngineRef): TargetDataRef{. - cdecl, dynlib: libname, importc: "LLVMGetExecutionEngineTargetData".} -proc AddGlobalMapping*(EE: ExecutionEngineRef, Global: ValueRef, - theAddr: pointer){.cdecl, dynlib: libname, - importc: "LLVMAddGlobalMapping".} -proc GetPointerToGlobal*(EE: ExecutionEngineRef, Global: ValueRef): pointer{. - cdecl, dynlib: libname, importc: "LLVMGetPointerToGlobal".} - -# LinkTimeOptimizer.h -# This provides a dummy type for pointers to the LTO object. -type - lto_t* = pointer - lto_status* = enum - LTO_UNKNOWN, LTO_OPT_SUCCESS, LTO_READ_SUCCESS, LTO_READ_FAILURE, - LTO_WRITE_FAILURE, LTO_NO_TARGET, LTO_NO_WORK, LTO_MODULE_MERGE_FAILURE, - LTO_ASM_FAILURE, LTO_NULL_OBJECT - lto_status_t* = lto_status - # This provides C interface to initialize link time optimizer. This allows - # linker to use dlopen() interface to dynamically load LinkTimeOptimizer. - # extern "C" helps, because dlopen() interface uses name to find the symbol. - -proc create_optimizer*(): lto_t{.cdecl, dynlib: libname, - importc: "llvm_create_optimizer".} -proc destroy_optimizer*(lto: lto_t){.cdecl, dynlib: libname, - importc: "llvm_destroy_optimizer".} -proc read_object_file*(lto: lto_t, input_filename: cstring): lto_status_t{. - cdecl, dynlib: libname, importc: "llvm_read_object_file".} -proc optimize_modules*(lto: lto_t, output_filename: cstring): lto_status_t{. - cdecl, dynlib: libname, importc: "llvm_optimize_modules".} - -# lto.h -const - LTO_API_VERSION* = 3 # log2 of alignment - -type - lto_symbol_attributes* = enum - SYMBOL_ALIGNMENT_MASK = 0x0000001F, - SYMBOL_PERMISSIONS_RODATA = 0x00000080, - SYMBOL_PERMISSIONS_CODE = 0x000000A0, - SYMBOL_PERMISSIONS_DATA = 0x000000C0, - SYMBOL_PERMISSIONS_MASK = 0x000000E0, - - SYMBOL_DEFINITION_REGULAR = 0x00000100, - SYMBOL_DEFINITION_TENTATIVE = 0x00000200, - SYMBOL_DEFINITION_WEAK = 0x00000300, - SYMBOL_DEFINITION_UNDEFINED = 0x00000400, - SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500, - SYMBOL_DEFINITION_MASK = 0x00000700, - SYMBOL_SCOPE_INTERNAL = 0x00000800, - - SYMBOL_SCOPE_HIDDEN = 0x00001000, - SYMBOL_SCOPE_DEFAULT = 0x00001800, - SYMBOL_SCOPE_PROTECTED = 0x00002000, - SYMBOL_SCOPE_MASK = 0x00003800, - lto_debug_model* = enum - DEBUG_MODEL_NONE = 0, DEBUG_MODEL_DWARF = 1 - lto_codegen_model* = enum - CODEGEN_PIC_MODEL_STATIC = 0, CODEGEN_PIC_MODEL_DYNAMIC = 1, - CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2 - - LTOModule {.pure} = object - LTOCodeGenerator {.pure} = object - lto_module_t* = ref LTOModule - lto_code_gen_t* = ref LTOCodeGenerator - -proc lto_get_version*(): cstring{.cdecl, dynlib: libname, - importc: "lto_get_version".} - # - # Returns the last error string or NULL if last operation was sucessful. - # -proc lto_get_error_message*(): cstring{.cdecl, dynlib: libname, - importc: "lto_get_error_message".} - # - # Checks if a file is a loadable object file. - # -proc lto_module_is_object_file*(path: cstring): bool{.cdecl, dynlib: libname, - importc: "lto_module_is_object_file".} - # - # Checks if a file is a loadable object compiled for requested target. - # -proc lto_module_is_object_file_for_target*(path: cstring, - target_triple_prefix: cstring): bool{.cdecl, dynlib: libname, - importc: "lto_module_is_object_file_for_target".} - # - # Checks if a buffer is a loadable object file. - # -proc lto_module_is_object_file_in_memory*(mem: pointer, len: int): bool{. - cdecl, dynlib: libname, importc: "lto_module_is_object_file_in_memory".} - # - # Checks if a buffer is a loadable object compiled for requested target. - # -proc lto_module_is_object_file_in_memory_for_target*(mem: pointer, len: int, - target_triple_prefix: cstring): bool{.cdecl, dynlib: libname, - importc: "lto_module_is_object_file_in_memory_for_target".} - # - # Loads an object file from disk. - # Returns NULL on error (check lto_get_error_message() for details). - # -proc lto_module_create*(path: cstring): lto_module_t{.cdecl, dynlib: libname, - importc: "lto_module_create".} - # - # Loads an object file from memory. - # Returns NULL on error (check lto_get_error_message() for details). - # -proc lto_module_create_from_memory*(mem: pointer, len: int): lto_module_t{. - cdecl, dynlib: libname, importc: "lto_module_create_from_memory".} - # - # Frees all memory internally allocated by the module. - # Upon return the lto_module_t is no longer valid. - # -proc lto_module_dispose*(module: lto_module_t){.cdecl, dynlib: libname, - importc: "lto_module_dispose".} - # - # Returns triple string which the object module was compiled under. - # -proc lto_module_get_target_triple*(module: lto_module_t): cstring{.cdecl, - dynlib: libname, importc: "lto_module_get_target_triple".} - # - # Returns the number of symbols in the object module. - # -proc lto_module_get_num_symbols*(module: lto_module_t): int32{.cdecl, - dynlib: libname, importc: "lto_module_get_num_symbols".} - # - # Returns the name of the ith symbol in the object module. - # -proc lto_module_get_symbol_name*(module: lto_module_t, index: int32): cstring{. - cdecl, dynlib: libname, importc: "lto_module_get_symbol_name".} - # - # Returns the attributes of the ith symbol in the object module. - # -proc lto_module_get_symbol_attribute*(module: lto_module_t, index: int32): lto_symbol_attributes{. - cdecl, dynlib: libname, importc: "lto_module_get_symbol_attribute".} - # - # Instantiates a code generator. - # Returns NULL on error (check lto_get_error_message() for details). - # -proc lto_codegen_create*(): lto_code_gen_t{.cdecl, dynlib: libname, - importc: "lto_codegen_create".} - # - # Frees all code generator and all memory it internally allocated. - # Upon return the lto_code_gen_t is no longer valid. - # -proc lto_codegen_dispose*(para1: lto_code_gen_t){.cdecl, dynlib: libname, - importc: "lto_codegen_dispose".} - # - # Add an object module to the set of modules for which code will be generated. - # Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_add_module*(cg: lto_code_gen_t, module: lto_module_t): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_add_module".} - # - # Sets if debug info should be generated. - # Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_set_debug_model*(cg: lto_code_gen_t, para2: lto_debug_model): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_set_debug_model".} - # - # Sets which PIC code model to generated. - # Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_set_pic_model*(cg: lto_code_gen_t, para2: lto_codegen_model): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_set_pic_model".} - # - # Sets the location of the "gcc" to run. If not set, libLTO will search for - # "gcc" on the path. - # -proc lto_codegen_set_gcc_path*(cg: lto_code_gen_t, path: cstring){.cdecl, - dynlib: libname, importc: "lto_codegen_set_gcc_path".} - # - # Sets the location of the assembler tool to run. If not set, libLTO - # will use gcc to invoke the assembler. - # -proc lto_codegen_set_assembler_path*(cg: lto_code_gen_t, path: cstring){.cdecl, - dynlib: libname, importc: "lto_codegen_set_assembler_path".} - # - # Adds to a list of all global symbols that must exist in the final - # generated code. If a function is not listed, it might be - # inlined into every usage and optimized away. - # -proc lto_codegen_add_must_preserve_symbol*(cg: lto_code_gen_t, symbol: cstring){. - cdecl, dynlib: libname, importc: "lto_codegen_add_must_preserve_symbol".} - # - # Writes a new object file at the specified path that contains the - # merged contents of all modules added so far. - # Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_write_merged_modules*(cg: lto_code_gen_t, path: cstring): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_write_merged_modules".} - # - # Generates code for all added modules into one native object file. - # On sucess returns a pointer to a generated mach-o/ELF buffer and - # length set to the buffer size. The buffer is owned by the - # lto_code_gen_t and will be freed when lto_codegen_dispose() - # is called, or lto_codegen_compile() is called again. - # On failure, returns NULL (check lto_get_error_message() for details). - # -proc lto_codegen_compile*(cg: lto_code_gen_t, len: var int): pointer{.cdecl, - dynlib: libname, importc: "lto_codegen_compile".} - # - # Sets options to help debug codegen bugs. - # -proc lto_codegen_debug_options*(cg: lto_code_gen_t, para2: cstring){.cdecl, - dynlib: libname, importc: "lto_codegen_debug_options".} diff --git a/llvm/llvm.pas b/llvm/llvm.pas deleted file mode 100755 index ad1398b83..000000000 --- a/llvm/llvm.pas +++ /dev/null @@ -1,1034 +0,0 @@ -unit llvm; - -interface - -const - libname=''; {Setup as you need} - -type - Pdword = ^dword; - PLLVMBasicBlockRef = ^LLVMBasicBlockRef; - PLLVMExecutionEngineRef = ^LLVMExecutionEngineRef; - PLLVMGenericValueRef = ^LLVMGenericValueRef; - PLLVMMemoryBufferRef = ^LLVMMemoryBufferRef; - PLLVMModuleProviderRef = ^LLVMModuleProviderRef; - PLLVMModuleRef = ^LLVMModuleRef; - PLLVMTypeRef = ^LLVMTypeRef; - PLLVMValueRef = ^LLVMValueRef; - -{ Core.h } -{ Opaque types. } -{* - * The top-level container for all LLVM global data. See the LLVMContext class. - } -type - - LLVMContextRef = LLVMOpaqueContext; -{* - * The top-level container for all other LLVM Intermediate Representation (IR) - * objects. See the llvm::Module class. - } - - LLVMModuleRef = LLVMOpaqueModule; -{* - * Each value in the LLVM IR has a type, an LLVMTypeRef. See the llvm::Type - * class. - } - - LLVMTypeRef = LLVMOpaqueType; -{* - * When building recursive types using LLVMRefineType, LLVMTypeRef values may - * become invalid; use LLVMTypeHandleRef to resolve this problem. See the - * llvm::AbstractTypeHolder class. - } - - LLVMTypeHandleRef = LLVMOpaqueTypeHandle; - - LLVMValueRef = LLVMOpaqueValue; - - LLVMBasicBlockRef = LLVMOpaqueBasicBlock; - - LLVMBuilderRef = LLVMOpaqueBuilder; -{ Used to provide a module to JIT or interpreter. - * See the llvm::ModuleProvider class. - } - - LLVMModuleProviderRef = LLVMOpaqueModuleProvider; -{ Used to provide a module to JIT or interpreter. - * See the llvm::MemoryBuffer class. - } - - LLVMMemoryBufferRef = LLVMOpaqueMemoryBuffer; -{* See the llvm::PassManagerBase class. } - - LLVMPassManagerRef = LLVMOpaquePassManager; -{* - * Used to iterate through the uses of a Value, allowing access to all Values - * that use this Value. See the llvm::Use and llvm::value_use_iterator classes. - } - - LLVMUseIteratorRef = LLVMOpaqueUseIterator; - - LLVMAttribute = (LLVMZExtAttribute := 1 shl 0,LLVMSExtAttribute := 1 shl 1, - LLVMNoReturnAttribute := 1 shl 2,LLVMInRegAttribute := 1 shl 3, - LLVMStructRetAttribute := 1 shl 4,LLVMNoUnwindAttribute := 1 shl 5, - LLVMNoAliasAttribute := 1 shl 6,LLVMByValAttribute := 1 shl 7, - LLVMNestAttribute := 1 shl 8,LLVMReadNoneAttribute := 1 shl 9, - LLVMReadOnlyAttribute := 1 shl 10,LLVMNoInlineAttribute := 1 shl 11, - LLVMAlwaysInlineAttribute := 1 shl 12,LLVMOptimizeForSizeAttribute := 1 shl 13, - LLVMStackProtectAttribute := 1 shl 14,LLVMStackProtectReqAttribute := 1 shl 15, - LLVMNoCaptureAttribute := 1 shl 21,LLVMNoRedZoneAttribute := 1 shl 22, - LLVMNoImplicitFloatAttribute := 1 shl 23,LLVMNakedAttribute := 1 shl 24, - LLVMInlineHintAttribute := 1 shl 25); - - LLVMOpcode = (LLVMRet := 1,LLVMBr := 2,LLVMSwitch := 3, - LLVMInvoke := 4,LLVMUnwind := 5,LLVMUnreachable := 6, - LLVMAdd := 7,LLVMFAdd := 8,LLVMSub := 9, - LLVMFSub := 10,LLVMMul := 11,LLVMFMul := 12, - LLVMUDiv := 13,LLVMSDiv := 14,LLVMFDiv := 15, - LLVMURem := 16,LLVMSRem := 17,LLVMFRem := 18, - LLVMShl := 19,LLVMLShr := 20,LLVMAShr := 21, - LLVMAnd := 22,LLVMOr := 23,LLVMXor := 24, - LLVMMalloc := 25,LLVMFree := 26,LLVMAlloca := 27, - LLVMLoad := 28,LLVMStore := 29,LLVMGetElementPtr := 30, - LLVMTrunk := 31,LLVMZExt := 32,LLVMSExt := 33, - LLVMFPToUI := 34,LLVMFPToSI := 35,LLVMUIToFP := 36, - LLVMSIToFP := 37,LLVMFPTrunc := 38,LLVMFPExt := 39, - LLVMPtrToInt := 40,LLVMIntToPtr := 41, - LLVMBitCast := 42,LLVMICmp := 43,LLVMFCmp := 44, - LLVMPHI := 45,LLVMCall := 46,LLVMSelect := 47, - LLVMVAArg := 50,LLVMExtractElement := 51, - LLVMInsertElement := 52,LLVMShuffleVector := 53, - LLVMExtractValue := 54,LLVMInsertValue := 55 - ); -{*< type with no size } -{*< 32 bit floating point type } -{*< 64 bit floating point type } -{*< 80 bit floating point type (X87) } -{*< 128 bit floating point type (112-bit mantissa) } -{*< 128 bit floating point type (two 64-bits) } -{*< Labels } -{*< Arbitrary bit width integers } -{*< Functions } -{*< Structures } -{*< Arrays } -{*< Pointers } -{*< Opaque: type with unknown structure } -{*< SIMD 'packed' format, or other vector type } -{*< Metadata } - - LLVMTypeKind = (LLVMVoidTypeKind,LLVMFloatTypeKind,LLVMDoubleTypeKind, - LLVMX86_FP80TypeKind,LLVMFP128TypeKind, - LLVMPPC_FP128TypeKind,LLVMLabelTypeKind, - LLVMIntegerTypeKind,LLVMFunctionTypeKind, - LLVMStructTypeKind,LLVMArrayTypeKind,LLVMPointerTypeKind, - LLVMOpaqueTypeKind,LLVMVectorTypeKind, - LLVMMetadataTypeKind); -{*< Externally visible function } -{*< Keep one copy of function when linking (inline) } -{*< Same, but only replaced by something - equivalent. } -{*< Keep one copy of function when linking (weak) } -{*< Same, but only replaced by something - equivalent. } -{*< Special purpose, only applies to global arrays } -{*< Rename collisions when linking (static - functions) } -{*< Like Internal, but omit from symbol table } -{*< Function to be imported from DLL } -{*< Function to be accessible from DLL } -{*< ExternalWeak linkage description } -{*< Stand-in functions for streaming fns from - bitcode } -{*< Tentative definitions } -{*< Like Private, but linker removes. } - - LLVMLinkage = (LLVMExternalLinkage,LLVMAvailableExternallyLinkage, - LLVMLinkOnceAnyLinkage,LLVMLinkOnceODRLinkage, - LLVMWeakAnyLinkage,LLVMWeakODRLinkage, - LLVMAppendingLinkage,LLVMInternalLinkage, - LLVMPrivateLinkage,LLVMDLLImportLinkage, - LLVMDLLExportLinkage,LLVMExternalWeakLinkage, - LLVMGhostLinkage,LLVMCommonLinkage,LLVMLinkerPrivateLinkage - ); -{*< The GV is visible } -{*< The GV is hidden } -{*< The GV is protected } - - LLVMVisibility = (LLVMDefaultVisibility,LLVMHiddenVisibility, - LLVMProtectedVisibility); - - LLVMCallConv = (LLVMCCallConv := 0,LLVMFastCallConv := 8, - LLVMColdCallConv := 9,LLVMX86StdcallCallConv := 64, - LLVMX86FastcallCallConv := 65); -{*< equal } -{*< not equal } -{*< unsigned greater than } -{*< unsigned greater or equal } -{*< unsigned less than } -{*< unsigned less or equal } -{*< signed greater than } -{*< signed greater or equal } -{*< signed less than } -{*< signed less or equal } - - LLVMIntPredicate = (LLVMIntEQ := 32,LLVMIntNE,LLVMIntUGT,LLVMIntUGE, - LLVMIntULT,LLVMIntULE,LLVMIntSGT,LLVMIntSGE, - LLVMIntSLT,LLVMIntSLE); -{*< Always false (always folded) } -{*< True if ordered and equal } -{*< True if ordered and greater than } -{*< True if ordered and greater than or equal } -{*< True if ordered and less than } -{*< True if ordered and less than or equal } -{*< True if ordered and operands are unequal } -{*< True if ordered (no nans) } -{*< True if unordered: isnan(X) | isnan(Y) } -{*< True if unordered or equal } -{*< True if unordered or greater than } -{*< True if unordered, greater than, or equal } -{*< True if unordered or less than } -{*< True if unordered, less than, or equal } -{*< True if unordered or not equal } -{*< Always true (always folded) } - - LLVMRealPredicate = (LLVMRealPredicateFalse,LLVMRealOEQ,LLVMRealOGT, - LLVMRealOGE,LLVMRealOLT,LLVMRealOLE,LLVMRealONE, - LLVMRealORD,LLVMRealUNO,LLVMRealUEQ,LLVMRealUGT, - LLVMRealUGE,LLVMRealULT,LLVMRealULE,LLVMRealUNE, - LLVMRealPredicateTrue); -{===-- Error handling ----------------------------------------------------=== } - -procedure LLVMDisposeMessage(Message:pchar);cdecl;external libname name 'LLVMDisposeMessage'; -{===-- Modules -----------------------------------------------------------=== } -{ Create and destroy contexts. } -function LLVMContextCreate:LLVMContextRef;cdecl;external libname name 'LLVMContextCreate'; -function LLVMGetGlobalContext:LLVMContextRef;cdecl;external libname name 'LLVMGetGlobalContext'; -procedure LLVMContextDispose(C:LLVMContextRef);cdecl;external libname name 'LLVMContextDispose'; -{ Create and destroy modules. }{* See llvm::Module::Module. } -function LLVMModuleCreateWithName(ModuleID:pchar):LLVMModuleRef;cdecl;external libname name 'LLVMModuleCreateWithName'; -function LLVMModuleCreateWithNameInContext(ModuleID:pchar; C:LLVMContextRef):LLVMModuleRef;cdecl;external libname name 'LLVMModuleCreateWithNameInContext'; -{* See llvm::Module::~Module. } -procedure LLVMDisposeModule(M:LLVMModuleRef);cdecl;external libname name 'LLVMDisposeModule'; -{* Data layout. See Module::getDataLayout. } -function LLVMGetDataLayout(M:LLVMModuleRef):pchar;cdecl;external libname name 'LLVMGetDataLayout'; -procedure LLVMSetDataLayout(M:LLVMModuleRef; Triple:pchar);cdecl;external libname name 'LLVMSetDataLayout'; -{* Target triple. See Module::getTargetTriple. } -function LLVMGetTarget(M:LLVMModuleRef):pchar;cdecl;external libname name 'LLVMGetTarget'; -procedure LLVMSetTarget(M:LLVMModuleRef; Triple:pchar);cdecl;external libname name 'LLVMSetTarget'; -{* See Module::addTypeName. } -function LLVMAddTypeName(M:LLVMModuleRef; Name:pchar; Ty:LLVMTypeRef):longint;cdecl;external libname name 'LLVMAddTypeName'; -procedure LLVMDeleteTypeName(M:LLVMModuleRef; Name:pchar);cdecl;external libname name 'LLVMDeleteTypeName'; -function LLVMGetTypeByName(M:LLVMModuleRef; Name:pchar):LLVMTypeRef;cdecl;external libname name 'LLVMGetTypeByName'; -{* See Module::dump. } -procedure LLVMDumpModule(M:LLVMModuleRef);cdecl;external libname name 'LLVMDumpModule'; -{===-- Types -------------------------------------------------------------=== } -{ LLVM types conform to the following hierarchy: - * - * types: - * integer type - * real type - * function type - * sequence types: - * array type - * pointer type - * vector type - * void type - * label type - * opaque type - } -{* See llvm::LLVMTypeKind::getTypeID. } -function LLVMGetTypeKind(Ty:LLVMTypeRef):LLVMTypeKind;cdecl;external libname name 'LLVMGetTypeKind'; -{* See llvm::LLVMType::getContext. } -function LLVMGetTypeContext(Ty:LLVMTypeRef):LLVMContextRef;cdecl;external libname name 'LLVMGetTypeContext'; -{ Operations on integer types } -function LLVMInt1TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMInt1TypeInContext'; -function LLVMInt8TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMInt8TypeInContext'; -function LLVMInt16TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMInt16TypeInContext'; -function LLVMInt32TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMInt32TypeInContext'; -function LLVMInt64TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMInt64TypeInContext'; -function LLVMIntTypeInContext(C:LLVMContextRef; NumBits:dword):LLVMTypeRef;cdecl;external libname name 'LLVMIntTypeInContext'; -function LLVMInt1Type:LLVMTypeRef;cdecl;external libname name 'LLVMInt1Type'; -function LLVMInt8Type:LLVMTypeRef;cdecl;external libname name 'LLVMInt8Type'; -function LLVMInt16Type:LLVMTypeRef;cdecl;external libname name 'LLVMInt16Type'; -function LLVMInt32Type:LLVMTypeRef;cdecl;external libname name 'LLVMInt32Type'; -function LLVMInt64Type:LLVMTypeRef;cdecl;external libname name 'LLVMInt64Type'; -function LLVMIntType(NumBits:dword):LLVMTypeRef;cdecl;external libname name 'LLVMIntType'; -function LLVMGetIntTypeWidth(IntegerTy:LLVMTypeRef):dword;cdecl;external libname name 'LLVMGetIntTypeWidth'; -{ Operations on real types } -function LLVMFloatTypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMFloatTypeInContext'; -function LLVMDoubleTypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMDoubleTypeInContext'; -function LLVMX86FP80TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMX86FP80TypeInContext'; -function LLVMFP128TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMFP128TypeInContext'; -function LLVMPPCFP128TypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMPPCFP128TypeInContext'; -function LLVMFloatType:LLVMTypeRef;cdecl;external libname name 'LLVMFloatType'; -function LLVMDoubleType:LLVMTypeRef;cdecl;external libname name 'LLVMDoubleType'; -function LLVMX86FP80Type:LLVMTypeRef;cdecl;external libname name 'LLVMX86FP80Type'; -function LLVMFP128Type:LLVMTypeRef;cdecl;external libname name 'LLVMFP128Type'; -function LLVMPPCFP128Type:LLVMTypeRef;cdecl;external libname name 'LLVMPPCFP128Type'; -{ Operations on function types } -function LLVMFunctionType(ReturnType:LLVMTypeRef; ParamTypes:pLLVMTypeRef; ParamCount:dword; IsVarArg:longint):LLVMTypeRef;cdecl;external libname name 'LLVMFunctionType'; -function LLVMIsFunctionVarArg(FunctionTy:LLVMTypeRef):longint;cdecl;external libname name 'LLVMIsFunctionVarArg'; -function LLVMGetReturnType(FunctionTy:LLVMTypeRef):LLVMTypeRef;cdecl;external libname name 'LLVMGetReturnType'; -function LLVMCountParamTypes(FunctionTy:LLVMTypeRef):dword;cdecl;external libname name 'LLVMCountParamTypes'; -procedure LLVMGetParamTypes(FunctionTy:LLVMTypeRef; Dest:pLLVMTypeRef);cdecl;external libname name 'LLVMGetParamTypes'; -{ Operations on struct types } -function LLVMStructTypeInContext(C:LLVMContextRef; ElementTypes:pLLVMTypeRef; - ElementCount:dword; - isPacked:longint):LLVMTypeRef;cdecl;external libname name 'LLVMStructTypeInContext'; -function LLVMStructType(ElementTypes:pLLVMTypeRef; ElementCount:dword; - isPacked:longint):LLVMTypeRef;cdecl;external libname name 'LLVMStructType'; -function LLVMCountStructElementTypes(StructTy:LLVMTypeRef):dword;cdecl;external libname name 'LLVMCountStructElementTypes'; -procedure LLVMGetStructElementTypes(StructTy:LLVMTypeRef; Dest:pLLVMTypeRef);cdecl;external libname name 'LLVMGetStructElementTypes'; -function LLVMIsPackedStruct(StructTy:LLVMTypeRef):longint;cdecl;external libname name 'LLVMIsPackedStruct'; -{ Operations on array, pointer, and vector types (sequence types) } -function LLVMArrayType(ElementType:LLVMTypeRef; ElementCount:dword):LLVMTypeRef;cdecl;external libname name 'LLVMArrayType'; -function LLVMPointerType(ElementType:LLVMTypeRef; AddressSpace:dword):LLVMTypeRef;cdecl;external libname name 'LLVMPointerType'; -function LLVMVectorType(ElementType:LLVMTypeRef; ElementCount:dword):LLVMTypeRef;cdecl;external libname name 'LLVMVectorType'; -function LLVMGetElementType(Ty:LLVMTypeRef):LLVMTypeRef;cdecl;external libname name 'LLVMGetElementType'; -function LLVMGetArrayLength(ArrayTy:LLVMTypeRef):dword;cdecl;external libname name 'LLVMGetArrayLength'; -function LLVMGetPointerAddressSpace(PointerTy:LLVMTypeRef):dword;cdecl;external libname name 'LLVMGetPointerAddressSpace'; -function LLVMGetVectorSize(VectorTy:LLVMTypeRef):dword;cdecl;external libname name 'LLVMGetVectorSize'; -{ Operations on other types } -function LLVMVoidTypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMVoidTypeInContext'; -function LLVMLabelTypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMLabelTypeInContext'; -function LLVMOpaqueTypeInContext(C:LLVMContextRef):LLVMTypeRef;cdecl;external libname name 'LLVMOpaqueTypeInContext'; -function LLVMVoidType:LLVMTypeRef;cdecl;external libname name 'LLVMVoidType'; -function LLVMLabelType:LLVMTypeRef;cdecl;external libname name 'LLVMLabelType'; -function LLVMOpaqueType:LLVMTypeRef;cdecl;external libname name 'LLVMOpaqueType'; -{ Operations on type handles } -function LLVMCreateTypeHandle(PotentiallyAbstractTy:LLVMTypeRef):LLVMTypeHandleRef;cdecl;external libname name 'LLVMCreateTypeHandle'; -procedure LLVMRefineType(AbstractTy:LLVMTypeRef; ConcreteTy:LLVMTypeRef);cdecl;external libname name 'LLVMRefineType'; -function LLVMResolveTypeHandle(TypeHandle:LLVMTypeHandleRef):LLVMTypeRef;cdecl;external libname name 'LLVMResolveTypeHandle'; -procedure LLVMDisposeTypeHandle(TypeHandle:LLVMTypeHandleRef);cdecl;external libname name 'LLVMDisposeTypeHandle'; -{ Operations on all values } -function LLVMTypeOf(Val:LLVMValueRef):LLVMTypeRef;cdecl;external libname name 'LLVMTypeOf'; -function LLVMGetValueName(Val:LLVMValueRef):pchar;cdecl;external libname name 'LLVMGetValueName'; -procedure LLVMSetValueName(Val:LLVMValueRef; Name:pchar);cdecl;external libname name 'LLVMSetValueName'; -procedure LLVMDumpValue(Val:LLVMValueRef);cdecl;external libname name 'LLVMDumpValue'; -procedure LLVMReplaceAllUsesWith(OldVal:LLVMValueRef; NewVal:LLVMValueRef);cdecl;external libname name 'LLVMReplaceAllUsesWith'; -{ Conversion functions. Return the input value if it is an instance of the - specified class, otherwise NULL. See llvm::dyn_cast_or_null<>. } -function LLVMIsAArgument(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAArgument'; -function LLVMIsABasicBlock(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsABasicBlock'; -function LLVMIsAInlineAsm(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAInlineAsm'; -function LLVMIsAUser(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAUser'; -function LLVMIsAConstant(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstant'; -function LLVMIsAConstantAggregateZero(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantAggregateZero'; -function LLVMIsAConstantArray(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantArray'; -function LLVMIsAConstantExpr(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantExpr'; -function LLVMIsAConstantFP(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantFP'; -function LLVMIsAConstantInt(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantInt'; -function LLVMIsAConstantPointerNull(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantPointerNull'; -function LLVMIsAConstantStruct(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantStruct'; -function LLVMIsAConstantVector(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAConstantVector'; -function LLVMIsAGlobalValue(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAGlobalValue'; -function LLVMIsAFunction(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFunction'; -function LLVMIsAGlobalAlias(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAGlobalAlias'; -function LLVMIsAGlobalVariable(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAGlobalVariable'; -function LLVMIsAUndefValue(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAUndefValue'; -function LLVMIsAInstruction(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAInstruction'; -function LLVMIsABinaryOperator(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsABinaryOperator'; -function LLVMIsACallInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsACallInst'; -function LLVMIsAIntrinsicInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAIntrinsicInst'; -function LLVMIsADbgInfoIntrinsic(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsADbgInfoIntrinsic'; -function LLVMIsADbgDeclareInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsADbgDeclareInst'; -function LLVMIsADbgFuncStartInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsADbgFuncStartInst'; -function LLVMIsADbgRegionEndInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsADbgRegionEndInst'; -function LLVMIsADbgRegionStartInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsADbgRegionStartInst'; -function LLVMIsADbgStopPointInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsADbgStopPointInst'; -function LLVMIsAEHSelectorInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAEHSelectorInst'; -function LLVMIsAMemIntrinsic(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAMemIntrinsic'; -function LLVMIsAMemCpyInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAMemCpyInst'; -function LLVMIsAMemMoveInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAMemMoveInst'; -function LLVMIsAMemSetInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAMemSetInst'; -function LLVMIsACmpInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsACmpInst'; -function LLVMIsAFCmpInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFCmpInst'; -function LLVMIsAICmpInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAICmpInst'; -function LLVMIsAExtractElementInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAExtractElementInst'; -function LLVMIsAGetElementPtrInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAGetElementPtrInst'; -function LLVMIsAInsertElementInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAInsertElementInst'; -function LLVMIsAInsertValueInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAInsertValueInst'; -function LLVMIsAPHINode(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAPHINode'; -function LLVMIsASelectInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsASelectInst'; -function LLVMIsAShuffleVectorInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAShuffleVectorInst'; -function LLVMIsAStoreInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAStoreInst'; -function LLVMIsATerminatorInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsATerminatorInst'; -function LLVMIsABranchInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsABranchInst'; -function LLVMIsAInvokeInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAInvokeInst'; -function LLVMIsAReturnInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAReturnInst'; -function LLVMIsASwitchInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsASwitchInst'; -function LLVMIsAUnreachableInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAUnreachableInst'; -function LLVMIsAUnwindInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAUnwindInst'; -function LLVMIsAUnaryInstruction(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAUnaryInstruction'; -function LLVMIsAAllocationInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAAllocationInst'; -function LLVMIsAAllocaInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAAllocaInst'; -function LLVMIsACastInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsACastInst'; -function LLVMIsABitCastInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsABitCastInst'; -function LLVMIsAFPExtInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFPExtInst'; -function LLVMIsAFPToSIInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFPToSIInst'; -function LLVMIsAFPToUIInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFPToUIInst'; -function LLVMIsAFPTruncInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFPTruncInst'; -function LLVMIsAIntToPtrInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAIntToPtrInst'; -function LLVMIsAPtrToIntInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAPtrToIntInst'; -function LLVMIsASExtInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsASExtInst'; -function LLVMIsASIToFPInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsASIToFPInst'; -function LLVMIsATruncInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsATruncInst'; -function LLVMIsAUIToFPInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAUIToFPInst'; -function LLVMIsAZExtInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAZExtInst'; -function LLVMIsAExtractValueInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAExtractValueInst'; -function LLVMIsAFreeInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAFreeInst'; -function LLVMIsALoadInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsALoadInst'; -function LLVMIsAVAArgInst(Val:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMIsAVAArgInst'; -{ Operations on Uses } -function LLVMGetFirstUse(Val:LLVMValueRef):LLVMUseIteratorRef;cdecl;external libname name 'LLVMGetFirstUse'; -function LLVMGetNextUse(U:LLVMUseIteratorRef):LLVMUseIteratorRef;cdecl;external libname name 'LLVMGetNextUse'; -function LLVMGetUser(U:LLVMUseIteratorRef):LLVMValueRef;cdecl;external libname name 'LLVMGetUser'; -function LLVMGetUsedValue(U:LLVMUseIteratorRef):LLVMValueRef;cdecl;external libname name 'LLVMGetUsedValue'; -{ Operations on Users } -function LLVMGetOperand(Val:LLVMValueRef; Index:dword):LLVMValueRef;cdecl;external libname name 'LLVMGetOperand'; -{ Operations on constants of any type } -function LLVMConstNull(Ty:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstNull'; -{ all zeroes } -function LLVMConstAllOnes(Ty:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstAllOnes'; -{ only for int/vector } -function LLVMGetUndef(Ty:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMGetUndef'; -function LLVMIsConstant(Val:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsConstant'; -function LLVMIsNull(Val:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsNull'; -function LLVMIsUndef(Val:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsUndef'; -function LLVMConstPointerNull(Ty:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstPointerNull'; -{ Operations on scalar constants } -function LLVMConstInt(IntTy:LLVMTypeRef; N:qword; SignExtend:longint):LLVMValueRef;cdecl;external libname name 'LLVMConstInt'; -function LLVMConstIntOfString(IntTy:LLVMTypeRef; Text:pchar; Radix:uint8_t):LLVMValueRef;cdecl;external libname name 'LLVMConstIntOfString'; -function LLVMConstIntOfStringAndSize(IntTy:LLVMTypeRef; Text:pchar; SLen:dword; Radix:uint8_t):LLVMValueRef;cdecl;external libname name 'LLVMConstIntOfStringAndSize'; -function LLVMConstReal(RealTy:LLVMTypeRef; N:double):LLVMValueRef;cdecl;external libname name 'LLVMConstReal'; -function LLVMConstRealOfString(RealTy:LLVMTypeRef; Text:pchar):LLVMValueRef;cdecl;external libname name 'LLVMConstRealOfString'; -function LLVMConstRealOfStringAndSize(RealTy:LLVMTypeRef; Text:pchar; SLen:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstRealOfStringAndSize'; -function LLVMConstIntGetZExtValue(ConstantVal:LLVMValueRef):qword;cdecl;external libname name 'LLVMConstIntGetZExtValue'; -function LLVMConstIntGetSExtValue(ConstantVal:LLVMValueRef):int64;cdecl;external libname name 'LLVMConstIntGetSExtValue'; -{ Operations on composite constants } -function LLVMConstStringInContext(C:LLVMContextRef; Str:pchar; Length:dword; DontNullTerminate:longint):LLVMValueRef;cdecl;external libname name 'LLVMConstStringInContext'; -function LLVMConstStructInContext(C:LLVMContextRef; - ConstantVals:pLLVMValueRef; Count:dword; isPacked:longint):LLVMValueRef;cdecl;external libname name 'LLVMConstStructInContext'; -function LLVMConstString(Str:pchar; Length:dword; DontNullTerminate:longint):LLVMValueRef;cdecl;external libname name 'LLVMConstString'; -function LLVMConstArray(ElementTy:LLVMTypeRef; ConstantVals:pLLVMValueRef; Length:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstArray'; -function LLVMConstStruct(ConstantVals:pLLVMValueRef; Count:dword; isPacked:longint):LLVMValueRef;cdecl;external libname name 'LLVMConstStruct'; -function LLVMConstVector(ScalarConstantVals:pLLVMValueRef; Size:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstVector'; -{ Constant expressions } -function LLVMGetConstOpcode(ConstantVal:LLVMValueRef):LLVMOpcode;cdecl;external libname name 'LLVMGetConstOpcode'; -function LLVMAlignOf(Ty:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMAlignOf'; -function LLVMSizeOf(Ty:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMSizeOf'; -function LLVMConstNeg(ConstantVal:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstNeg'; -function LLVMConstFNeg(ConstantVal:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFNeg'; -function LLVMConstNot(ConstantVal:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstNot'; -function LLVMConstAdd(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstAdd'; -function LLVMConstNSWAdd(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstNSWAdd'; -function LLVMConstFAdd(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFAdd'; -function LLVMConstSub(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSub'; -function LLVMConstFSub(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFSub'; -function LLVMConstMul(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstMul'; -function LLVMConstFMul(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFMul'; -function LLVMConstUDiv(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstUDiv'; -function LLVMConstSDiv(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSDiv'; -function LLVMConstExactSDiv(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstExactSDiv'; -function LLVMConstFDiv(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFDiv'; -function LLVMConstURem(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstURem'; -function LLVMConstSRem(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSRem'; -function LLVMConstFRem(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFRem'; -function LLVMConstAnd(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstAnd'; -function LLVMConstOr(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstOr'; -function LLVMConstXor(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstXor'; -function LLVMConstICmp(Predicate:LLVMIntPredicate; LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstICmp'; -function LLVMConstFCmp(Predicate:LLVMRealPredicate; LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFCmp'; -function LLVMConstShl(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstShl'; -function LLVMConstLShr(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstLShr'; -function LLVMConstAShr(LHSConstant:LLVMValueRef; RHSConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstAShr'; -function LLVMConstGEP(ConstantVal:LLVMValueRef; ConstantIndices:pLLVMValueRef; NumIndices:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstGEP'; -function LLVMConstInBoundsGEP(ConstantVal:LLVMValueRef; ConstantIndices:pLLVMValueRef; NumIndices:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstInBoundsGEP'; -function LLVMConstTrunc(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstTrunc'; -function LLVMConstSExt(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSExt'; -function LLVMConstZExt(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstZExt'; -function LLVMConstFPTrunc(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFPTrunc'; -function LLVMConstFPExt(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFPExt'; -function LLVMConstUIToFP(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstUIToFP'; -function LLVMConstSIToFP(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSIToFP'; -function LLVMConstFPToUI(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFPToUI'; -function LLVMConstFPToSI(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFPToSI'; -function LLVMConstPtrToInt(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstPtrToInt'; -function LLVMConstIntToPtr(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstIntToPtr'; -function LLVMConstBitCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstBitCast'; -function LLVMConstZExtOrBitCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstZExtOrBitCast'; -function LLVMConstSExtOrBitCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSExtOrBitCast'; -function LLVMConstTruncOrBitCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstTruncOrBitCast'; -function LLVMConstPointerCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstPointerCast'; -function LLVMConstIntCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef; isSigned:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstIntCast'; -function LLVMConstFPCast(ConstantVal:LLVMValueRef; ToType:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMConstFPCast'; -function LLVMConstSelect(ConstantCondition:LLVMValueRef; ConstantIfTrue:LLVMValueRef; ConstantIfFalse:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstSelect'; -function LLVMConstExtractElement(VectorConstant:LLVMValueRef; IndexConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstExtractElement'; -function LLVMConstInsertElement(VectorConstant:LLVMValueRef; ElementValueConstant:LLVMValueRef; IndexConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstInsertElement'; -function LLVMConstShuffleVector(VectorAConstant:LLVMValueRef; VectorBConstant:LLVMValueRef; MaskConstant:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMConstShuffleVector'; -function LLVMConstExtractValue(AggConstant:LLVMValueRef; IdxList:pdword; NumIdx:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstExtractValue'; -function LLVMConstInsertValue(AggConstant:LLVMValueRef; ElementValueConstant:LLVMValueRef; IdxList:pdword; NumIdx:dword):LLVMValueRef;cdecl;external libname name 'LLVMConstInsertValue'; - -function LLVMConstInlineAsm(Ty:LLVMTypeRef; AsmString:pchar; Constraints:pchar; HasSideEffects:longint):LLVMValueRef;cdecl;external libname name 'LLVMConstInlineAsm'; -{ Operations on global variables, functions, and aliases (globals) } -function LLVMGetGlobalParent(Global:LLVMValueRef):LLVMModuleRef;cdecl;external libname name 'LLVMGetGlobalParent'; -function LLVMIsDeclaration(Global:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsDeclaration'; -function LLVMGetLinkage(Global:LLVMValueRef):LLVMLinkage;cdecl;external libname name 'LLVMGetLinkage'; -procedure LLVMSetLinkage(Global:LLVMValueRef; Linkage:LLVMLinkage);cdecl;external libname name 'LLVMSetLinkage'; -function LLVMGetSection(Global:LLVMValueRef):pchar;cdecl;external libname name 'LLVMGetSection'; -procedure LLVMSetSection(Global:LLVMValueRef; Section:pchar);cdecl;external libname name 'LLVMSetSection'; -function LLVMGetVisibility(Global:LLVMValueRef):LLVMVisibility;cdecl;external libname name 'LLVMGetVisibility'; -procedure LLVMSetVisibility(Global:LLVMValueRef; Viz:LLVMVisibility);cdecl;external libname name 'LLVMSetVisibility'; -function LLVMGetAlignment(Global:LLVMValueRef):dword;cdecl;external libname name 'LLVMGetAlignment'; -procedure LLVMSetAlignment(Global:LLVMValueRef; Bytes:dword);cdecl;external libname name 'LLVMSetAlignment'; -{ Operations on global variables } - -function LLVMAddGlobal(M:LLVMModuleRef; Ty:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMAddGlobal'; - -function LLVMGetNamedGlobal(M:LLVMModuleRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMGetNamedGlobal'; -function LLVMGetFirstGlobal(M:LLVMModuleRef):LLVMValueRef;cdecl;external libname name 'LLVMGetFirstGlobal'; -function LLVMGetLastGlobal(M:LLVMModuleRef):LLVMValueRef;cdecl;external libname name 'LLVMGetLastGlobal'; -function LLVMGetNextGlobal(GlobalVar:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetNextGlobal'; -function LLVMGetPreviousGlobal(GlobalVar:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetPreviousGlobal'; -procedure LLVMDeleteGlobal(GlobalVar:LLVMValueRef);cdecl;external libname name 'LLVMDeleteGlobal'; -function LLVMGetInitializer(GlobalVar:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetInitializer'; -procedure LLVMSetInitializer(GlobalVar:LLVMValueRef; ConstantVal:LLVMValueRef);cdecl;external libname name 'LLVMSetInitializer'; -function LLVMIsThreadLocal(GlobalVar:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsThreadLocal'; -procedure LLVMSetThreadLocal(GlobalVar:LLVMValueRef; IsThreadLocal:longint);cdecl;external libname name 'LLVMSetThreadLocal'; -function LLVMIsGlobalConstant(GlobalVar:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsGlobalConstant'; -procedure LLVMSetGlobalConstant(GlobalVar:LLVMValueRef; IsConstant:longint);cdecl;external libname name 'LLVMSetGlobalConstant'; -{ Operations on aliases } -function LLVMAddAlias(M:LLVMModuleRef; Ty:LLVMTypeRef; Aliasee:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMAddAlias'; -{ Operations on functions } -function LLVMAddFunction(M:LLVMModuleRef; Name:pchar; FunctionTy:LLVMTypeRef):LLVMValueRef;cdecl;external libname name 'LLVMAddFunction'; -function LLVMGetNamedFunction(M:LLVMModuleRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMGetNamedFunction'; -function LLVMGetFirstFunction(M:LLVMModuleRef):LLVMValueRef;cdecl;external libname name 'LLVMGetFirstFunction'; -function LLVMGetLastFunction(M:LLVMModuleRef):LLVMValueRef;cdecl;external libname name 'LLVMGetLastFunction'; -function LLVMGetNextFunction(Fn:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetNextFunction'; -function LLVMGetPreviousFunction(Fn:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetPreviousFunction'; -procedure LLVMDeleteFunction(Fn:LLVMValueRef);cdecl;external libname name 'LLVMDeleteFunction'; -function LLVMGetIntrinsicID(Fn:LLVMValueRef):dword;cdecl;external libname name 'LLVMGetIntrinsicID'; -function LLVMGetFunctionCallConv(Fn:LLVMValueRef):dword;cdecl;external libname name 'LLVMGetFunctionCallConv'; -procedure LLVMSetFunctionCallConv(Fn:LLVMValueRef; CC:dword);cdecl;external libname name 'LLVMSetFunctionCallConv'; -function LLVMGetGC(Fn:LLVMValueRef):pchar;cdecl;external libname name 'LLVMGetGC'; -procedure LLVMSetGC(Fn:LLVMValueRef; Name:pchar);cdecl;external libname name 'LLVMSetGC'; -procedure LLVMAddFunctionAttr(Fn:LLVMValueRef; PA:LLVMAttribute);cdecl;external libname name 'LLVMAddFunctionAttr'; -function LLVMGetFunctionAttr(Fn:LLVMValueRef):LLVMAttribute;cdecl;external libname name 'LLVMGetFunctionAttr'; -procedure LLVMRemoveFunctionAttr(Fn:LLVMValueRef; PA:LLVMAttribute);cdecl;external libname name 'LLVMRemoveFunctionAttr'; -{ Operations on parameters } -function LLVMCountParams(Fn:LLVMValueRef):dword;cdecl;external libname name 'LLVMCountParams'; -procedure LLVMGetParams(Fn:LLVMValueRef; Params:pLLVMValueRef);cdecl;external libname name 'LLVMGetParams'; -function LLVMGetParam(Fn:LLVMValueRef; Index:dword):LLVMValueRef;cdecl;external libname name 'LLVMGetParam'; -function LLVMGetParamParent(Inst:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetParamParent'; -function LLVMGetFirstParam(Fn:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetFirstParam'; -function LLVMGetLastParam(Fn:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetLastParam'; -function LLVMGetNextParam(Arg:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetNextParam'; -function LLVMGetPreviousParam(Arg:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetPreviousParam'; -procedure LLVMAddAttribute(Arg:LLVMValueRef; PA:LLVMAttribute);cdecl;external libname name 'LLVMAddAttribute'; -procedure LLVMRemoveAttribute(Arg:LLVMValueRef; PA:LLVMAttribute);cdecl;external libname name 'LLVMRemoveAttribute'; -function LLVMGetAttribute(Arg:LLVMValueRef):LLVMAttribute;cdecl;external libname name 'LLVMGetAttribute'; -procedure LLVMSetParamAlignment(Arg:LLVMValueRef; align:dword);cdecl;external libname name 'LLVMSetParamAlignment'; -{ Operations on basic blocks } -function LLVMBasicBlockAsValue(BB:LLVMBasicBlockRef):LLVMValueRef;cdecl;external libname name 'LLVMBasicBlockAsValue'; -function LLVMValueIsBasicBlock(Val:LLVMValueRef):longint;cdecl;external libname name 'LLVMValueIsBasicBlock'; -function LLVMValueAsBasicBlock(Val:LLVMValueRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMValueAsBasicBlock'; -function LLVMGetBasicBlockParent(BB:LLVMBasicBlockRef):LLVMValueRef;cdecl;external libname name 'LLVMGetBasicBlockParent'; -function LLVMCountBasicBlocks(Fn:LLVMValueRef):dword;cdecl;external libname name 'LLVMCountBasicBlocks'; -procedure LLVMGetBasicBlocks(Fn:LLVMValueRef; BasicBlocks:pLLVMBasicBlockRef);cdecl;external libname name 'LLVMGetBasicBlocks'; -function LLVMGetFirstBasicBlock(Fn:LLVMValueRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetFirstBasicBlock'; -function LLVMGetLastBasicBlock(Fn:LLVMValueRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetLastBasicBlock'; -function LLVMGetNextBasicBlock(BB:LLVMBasicBlockRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetNextBasicBlock'; -function LLVMGetPreviousBasicBlock(BB:LLVMBasicBlockRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetPreviousBasicBlock'; -function LLVMGetEntryBasicBlock(Fn:LLVMValueRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetEntryBasicBlock'; -function LLVMAppendBasicBlockInContext(C:LLVMContextRef; Fn:LLVMValueRef; Name:pchar):LLVMBasicBlockRef;cdecl;external libname name 'LLVMAppendBasicBlockInContext'; -function LLVMInsertBasicBlockInContext(C:LLVMContextRef; BB:LLVMBasicBlockRef; Name:pchar):LLVMBasicBlockRef;cdecl;external libname name 'LLVMInsertBasicBlockInContext'; -function LLVMAppendBasicBlock(Fn:LLVMValueRef; Name:pchar):LLVMBasicBlockRef;cdecl;external libname name 'LLVMAppendBasicBlock'; -function LLVMInsertBasicBlock(InsertBeforeBB:LLVMBasicBlockRef; Name:pchar):LLVMBasicBlockRef;cdecl;external libname name 'LLVMInsertBasicBlock'; -procedure LLVMDeleteBasicBlock(BB:LLVMBasicBlockRef);cdecl;external libname name 'LLVMDeleteBasicBlock'; -{ Operations on instructions } -function LLVMGetInstructionParent(Inst:LLVMValueRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetInstructionParent'; -function LLVMGetFirstInstruction(BB:LLVMBasicBlockRef):LLVMValueRef;cdecl;external libname name 'LLVMGetFirstInstruction'; -function LLVMGetLastInstruction(BB:LLVMBasicBlockRef):LLVMValueRef;cdecl;external libname name 'LLVMGetLastInstruction'; -function LLVMGetNextInstruction(Inst:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetNextInstruction'; -function LLVMGetPreviousInstruction(Inst:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMGetPreviousInstruction'; -{ Operations on call sites } -procedure LLVMSetInstructionCallConv(Instr:LLVMValueRef; CC:dword);cdecl;external libname name 'LLVMSetInstructionCallConv'; -function LLVMGetInstructionCallConv(Instr:LLVMValueRef):dword;cdecl;external libname name 'LLVMGetInstructionCallConv'; -procedure LLVMAddInstrAttribute(Instr:LLVMValueRef; index:dword; para3:LLVMAttribute);cdecl;external libname name 'LLVMAddInstrAttribute'; -procedure LLVMRemoveInstrAttribute(Instr:LLVMValueRef; index:dword; para3:LLVMAttribute);cdecl;external libname name 'LLVMRemoveInstrAttribute'; -procedure LLVMSetInstrParamAlignment(Instr:LLVMValueRef; index:dword; align:dword);cdecl;external libname name 'LLVMSetInstrParamAlignment'; -{ Operations on call instructions (only) } -function LLVMIsTailCall(CallInst:LLVMValueRef):longint;cdecl;external libname name 'LLVMIsTailCall'; -procedure LLVMSetTailCall(CallInst:LLVMValueRef; IsTailCall:longint);cdecl;external libname name 'LLVMSetTailCall'; -{ Operations on phi nodes } -procedure LLVMAddIncoming(PhiNode:LLVMValueRef; IncomingValues:pLLVMValueRef; IncomingBlocks:pLLVMBasicBlockRef; Count:dword);cdecl;external libname name 'LLVMAddIncoming'; -function LLVMCountIncoming(PhiNode:LLVMValueRef):dword;cdecl;external libname name 'LLVMCountIncoming'; -function LLVMGetIncomingValue(PhiNode:LLVMValueRef; Index:dword):LLVMValueRef;cdecl;external libname name 'LLVMGetIncomingValue'; -function LLVMGetIncomingBlock(PhiNode:LLVMValueRef; Index:dword):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetIncomingBlock'; -{===-- Instruction builders ----------------------------------------------=== } -{ An instruction builder represents a point within a basic block, and is the - * exclusive means of building instructions using the C interface. - } -function LLVMCreateBuilderInContext(C:LLVMContextRef):LLVMBuilderRef;cdecl;external libname name 'LLVMCreateBuilderInContext'; -function LLVMCreateBuilder:LLVMBuilderRef;cdecl;external libname name 'LLVMCreateBuilder'; -procedure LLVMPositionBuilder(Builder:LLVMBuilderRef; Block:LLVMBasicBlockRef; Instr:LLVMValueRef);cdecl;external libname name 'LLVMPositionBuilder'; -procedure LLVMPositionBuilderBefore(Builder:LLVMBuilderRef; Instr:LLVMValueRef);cdecl;external libname name 'LLVMPositionBuilderBefore'; -procedure LLVMPositionBuilderAtEnd(Builder:LLVMBuilderRef; Block:LLVMBasicBlockRef);cdecl;external libname name 'LLVMPositionBuilderAtEnd'; -function LLVMGetInsertBlock(Builder:LLVMBuilderRef):LLVMBasicBlockRef;cdecl;external libname name 'LLVMGetInsertBlock'; -procedure LLVMClearInsertionPosition(Builder:LLVMBuilderRef);cdecl;external libname name 'LLVMClearInsertionPosition'; -procedure LLVMInsertIntoBuilder(Builder:LLVMBuilderRef; Instr:LLVMValueRef);cdecl;external libname name 'LLVMInsertIntoBuilder'; -procedure LLVMInsertIntoBuilderWithName(Builder:LLVMBuilderRef; Instr:LLVMValueRef; Name:pchar);cdecl;external libname name 'LLVMInsertIntoBuilderWithName'; -procedure LLVMDisposeBuilder(Builder:LLVMBuilderRef);cdecl;external libname name 'LLVMDisposeBuilder'; -{ Terminators } -function LLVMBuildRetVoid(para1:LLVMBuilderRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildRetVoid'; -function LLVMBuildRet(para1:LLVMBuilderRef; V:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildRet'; -function LLVMBuildAggregateRet(para1:LLVMBuilderRef; RetVals:pLLVMValueRef; N:dword):LLVMValueRef;cdecl;external libname name 'LLVMBuildAggregateRet'; -function LLVMBuildBr(para1:LLVMBuilderRef; Dest:LLVMBasicBlockRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildBr'; -function LLVMBuildCondBr(para1:LLVMBuilderRef; Cond:LLVMValueRef; - ThenBranch:LLVMBasicBlockRef; ElseBranch:LLVMBasicBlockRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildCondBr'; -function LLVMBuildSwitch(para1:LLVMBuilderRef; V:LLVMValueRef; ElseBranch:LLVMBasicBlockRef; NumCases:dword):LLVMValueRef;cdecl;external libname name 'LLVMBuildSwitch'; -function LLVMBuildInvoke(para1:LLVMBuilderRef; Fn:LLVMValueRef; Args:pLLVMValueRef; NumArgs:dword; ThenBranch:LLVMBasicBlockRef; - Catch:LLVMBasicBlockRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildInvoke'; -function LLVMBuildUnwind(para1:LLVMBuilderRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildUnwind'; -function LLVMBuildUnreachable(para1:LLVMBuilderRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildUnreachable'; -{ Add a case to the switch instruction } -procedure LLVMAddCase(Switch:LLVMValueRef; OnVal:LLVMValueRef; Dest:LLVMBasicBlockRef);cdecl;external libname name 'LLVMAddCase'; -{ Arithmetic } -function LLVMBuildAdd(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildAdd'; -function LLVMBuildNSWAdd(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildNSWAdd'; -function LLVMBuildFAdd(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFAdd'; -function LLVMBuildSub(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSub'; -function LLVMBuildFSub(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFSub'; -function LLVMBuildMul(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildMul'; -function LLVMBuildFMul(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFMul'; -function LLVMBuildUDiv(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildUDiv'; -function LLVMBuildSDiv(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSDiv'; -function LLVMBuildExactSDiv(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildExactSDiv'; -function LLVMBuildFDiv(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFDiv'; -function LLVMBuildURem(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildURem'; -function LLVMBuildSRem(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSRem'; -function LLVMBuildFRem(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFRem'; -function LLVMBuildShl(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildShl'; -function LLVMBuildLShr(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildLShr'; -function LLVMBuildAShr(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildAShr'; -function LLVMBuildAnd(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildAnd'; -function LLVMBuildOr(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildOr'; -function LLVMBuildXor(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildXor'; -function LLVMBuildNeg(para1:LLVMBuilderRef; V:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildNeg'; -function LLVMBuildFNeg(para1:LLVMBuilderRef; V:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFNeg'; -function LLVMBuildNot(para1:LLVMBuilderRef; V:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildNot'; -{ Memory } -function LLVMBuildMalloc(para1:LLVMBuilderRef; Ty:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildMalloc'; -function LLVMBuildArrayMalloc(para1:LLVMBuilderRef; Ty:LLVMTypeRef; Val:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildArrayMalloc'; -function LLVMBuildAlloca(para1:LLVMBuilderRef; Ty:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildAlloca'; -function LLVMBuildArrayAlloca(para1:LLVMBuilderRef; Ty:LLVMTypeRef; Val:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildArrayAlloca'; -function LLVMBuildFree(para1:LLVMBuilderRef; PointerVal:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildFree'; -function LLVMBuildLoad(para1:LLVMBuilderRef; PointerVal:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildLoad'; -function LLVMBuildStore(para1:LLVMBuilderRef; Val:LLVMValueRef; Ptr:LLVMValueRef):LLVMValueRef;cdecl;external libname name 'LLVMBuildStore'; -function LLVMBuildGEP(B:LLVMBuilderRef; Pointer:LLVMValueRef; Indices:pLLVMValueRef; NumIndices:dword; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildGEP'; -function LLVMBuildInBoundsGEP(B:LLVMBuilderRef; Pointer:LLVMValueRef; Indices:pLLVMValueRef; NumIndices:dword; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildInBoundsGEP'; -function LLVMBuildStructGEP(B:LLVMBuilderRef; Pointer:LLVMValueRef; Idx:dword; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildStructGEP'; -function LLVMBuildGlobalString(B:LLVMBuilderRef; Str:pchar; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildGlobalString'; -function LLVMBuildGlobalStringPtr(B:LLVMBuilderRef; Str:pchar; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildGlobalStringPtr'; -{ Casts } -function LLVMBuildTrunc(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildTrunc'; -function LLVMBuildZExt(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildZExt'; -function LLVMBuildSExt(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSExt'; -function LLVMBuildFPToUI(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFPToUI'; -function LLVMBuildFPToSI(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFPToSI'; -function LLVMBuildUIToFP(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildUIToFP'; -function LLVMBuildSIToFP(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSIToFP'; -function LLVMBuildFPTrunc(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFPTrunc'; -function LLVMBuildFPExt(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFPExt'; -function LLVMBuildPtrToInt(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildPtrToInt'; -function LLVMBuildIntToPtr(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildIntToPtr'; -function LLVMBuildBitCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildBitCast'; -function LLVMBuildZExtOrBitCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildZExtOrBitCast'; -function LLVMBuildSExtOrBitCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSExtOrBitCast'; -function LLVMBuildTruncOrBitCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildTruncOrBitCast'; -function LLVMBuildPointerCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildPointerCast'; -function LLVMBuildIntCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildIntCast'; -function LLVMBuildFPCast(para1:LLVMBuilderRef; Val:LLVMValueRef; DestTy:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFPCast'; -{ Comparisons } -function LLVMBuildICmp(para1:LLVMBuilderRef; Op:LLVMIntPredicate; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildICmp'; -function LLVMBuildFCmp(para1:LLVMBuilderRef; Op:LLVMRealPredicate; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildFCmp'; -{ Miscellaneous instructions } -function LLVMBuildPhi(para1:LLVMBuilderRef; Ty:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildPhi'; -function LLVMBuildCall(para1:LLVMBuilderRef; Fn:LLVMValueRef; Args:pLLVMValueRef; NumArgs:dword; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildCall'; -function LLVMBuildSelect(para1:LLVMBuilderRef; Cond:LLVMValueRef; ThenBranch:LLVMValueRef; ElseBranch:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildSelect'; -function LLVMBuildVAArg(para1:LLVMBuilderRef; List:LLVMValueRef; Ty:LLVMTypeRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildVAArg'; -function LLVMBuildExtractElement(para1:LLVMBuilderRef; VecVal:LLVMValueRef; Index:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildExtractElement'; -function LLVMBuildInsertElement(para1:LLVMBuilderRef; VecVal:LLVMValueRef; EltVal:LLVMValueRef; Index:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildInsertElement'; -function LLVMBuildShuffleVector(para1:LLVMBuilderRef; V1:LLVMValueRef; V2:LLVMValueRef; Mask:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildShuffleVector'; -function LLVMBuildExtractValue(para1:LLVMBuilderRef; AggVal:LLVMValueRef; Index:dword; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildExtractValue'; -function LLVMBuildInsertValue(para1:LLVMBuilderRef; AggVal:LLVMValueRef; EltVal:LLVMValueRef; Index:dword; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildInsertValue'; -function LLVMBuildIsNull(para1:LLVMBuilderRef; Val:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildIsNull'; -function LLVMBuildIsNotNull(para1:LLVMBuilderRef; Val:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildIsNotNull'; -function LLVMBuildPtrDiff(para1:LLVMBuilderRef; LHS:LLVMValueRef; RHS:LLVMValueRef; Name:pchar):LLVMValueRef;cdecl;external libname name 'LLVMBuildPtrDiff'; -{===-- Module providers --------------------------------------------------=== } -{ Encapsulates the module M in a module provider, taking ownership of the - * module. - * See the constructor llvm::ExistingModuleProvider::ExistingModuleProvider. - } -function LLVMCreateModuleProviderForExistingModule(M:LLVMModuleRef):LLVMModuleProviderRef;cdecl;external libname name 'LLVMCreateModuleProviderForExistingModule'; -{ Destroys the module provider MP as well as the contained module. - * See the destructor llvm::ModuleProvider::~ModuleProvider. - } -procedure LLVMDisposeModuleProvider(MP:LLVMModuleProviderRef);cdecl;external libname name 'LLVMDisposeModuleProvider'; -{===-- Memory buffers ----------------------------------------------------=== } -function LLVMCreateMemoryBufferWithContentsOfFile(Path:pchar; OutMemBuf:pLLVMMemoryBufferRef; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMCreateMemoryBufferWithContentsOfFile'; -function LLVMCreateMemoryBufferWithSTDIN(OutMemBuf:pLLVMMemoryBufferRef; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMCreateMemoryBufferWithSTDIN'; -procedure LLVMDisposeMemoryBuffer(MemBuf:LLVMMemoryBufferRef);cdecl;external libname name 'LLVMDisposeMemoryBuffer'; -{===-- Pass Managers -----------------------------------------------------=== } -{* Constructs a new whole-module pass pipeline. This type of pipeline is - suitable for link-time optimization and whole-module transformations. - See llvm::PassManager::PassManager. } -function LLVMCreatePassManager:LLVMPassManagerRef;cdecl;external libname name 'LLVMCreatePassManager'; -{* Constructs a new function-by-function pass pipeline over the module - provider. It does not take ownership of the module provider. This type of - pipeline is suitable for code generation and JIT compilation tasks. - See llvm::FunctionPassManager::FunctionPassManager. } -function LLVMCreateFunctionPassManager(MP:LLVMModuleProviderRef):LLVMPassManagerRef;cdecl;external libname name 'LLVMCreateFunctionPassManager'; -{* Initializes, executes on the provided module, and finalizes all of the - passes scheduled in the pass manager. Returns 1 if any of the passes - modified the module, 0 otherwise. See llvm::PassManager::run(Module&). } -function LLVMRunPassManager(PM:LLVMPassManagerRef; M:LLVMModuleRef):longint;cdecl;external libname name 'LLVMRunPassManager'; -{* Initializes all of the function passes scheduled in the function pass - manager. Returns 1 if any of the passes modified the module, 0 otherwise. - See llvm::FunctionPassManager::doInitialization. } -function LLVMInitializeFunctionPassManager(FPM:LLVMPassManagerRef):longint;cdecl;external libname name 'LLVMInitializeFunctionPassManager'; -{* Executes all of the function passes scheduled in the function pass manager - on the provided function. Returns 1 if any of the passes modified the - function, false otherwise. - See llvm::FunctionPassManager::run(Function&). } -function LLVMRunFunctionPassManager(FPM:LLVMPassManagerRef; F:LLVMValueRef):longint;cdecl;external libname name 'LLVMRunFunctionPassManager'; -{* Finalizes all of the function passes scheduled in in the function pass - manager. Returns 1 if any of the passes modified the module, 0 otherwise. - See llvm::FunctionPassManager::doFinalization. } -function LLVMFinalizeFunctionPassManager(FPM:LLVMPassManagerRef):longint;cdecl;external libname name 'LLVMFinalizeFunctionPassManager'; -{* Frees the memory of a pass pipeline. For function pipelines, does not free - the module provider. - See llvm::PassManagerBase::~PassManagerBase. } -procedure LLVMDisposePassManager(PM:LLVMPassManagerRef);cdecl;external libname name 'LLVMDisposePassManager'; -{ Analysis.h } -{ verifier will print to stderr and abort() } -{ verifier will print to stderr and return 1 } -{ verifier will just return 1 } -type - - LLVMVerifierFailureAction = (LLVMAbortProcessAction,LLVMPrintMessageAction, - LLVMReturnStatusAction); -{ Verifies that a module is valid, taking the specified action if not. - Optionally returns a human-readable description of any invalid constructs. - OutMessage must be disposed with LLVMDisposeMessage. } - -function LLVMVerifyModule(M:LLVMModuleRef; Action:LLVMVerifierFailureAction; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMVerifyModule'; -{ Verifies that a single function is valid, taking the specified action. Useful - for debugging. } -function LLVMVerifyFunction(Fn:LLVMValueRef; Action:LLVMVerifierFailureAction):longint;cdecl;external libname name 'LLVMVerifyFunction'; -{ Open up a ghostview window that displays the CFG of the current function. - Useful for debugging. } -procedure LLVMViewFunctionCFG(Fn:LLVMValueRef);cdecl;external libname name 'LLVMViewFunctionCFG'; -procedure LLVMViewFunctionCFGOnly(Fn:LLVMValueRef);cdecl;external libname name 'LLVMViewFunctionCFGOnly'; -{ BitReader.h } -{ Builds a module from the bitcode in the specified memory buffer, returning a - reference to the module via the OutModule parameter. Returns 0 on success. - Optionally returns a human-readable error message via OutMessage. }function LLVMParseBitcode(MemBuf:LLVMMemoryBufferRef; OutModule:pLLVMModuleRef; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMParseBitcode'; -function LLVMParseBitcodeInContext(ContextRef:LLVMContextRef; MemBuf:LLVMMemoryBufferRef; OutModule:pLLVMModuleRef; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMParseBitcodeInContext'; -{ Reads a module from the specified path, returning via the OutMP parameter - a module provider which performs lazy deserialization. Returns 0 on success. - Optionally returns a human-readable error message via OutMessage. }function LLVMGetBitcodeModuleProvider(MemBuf:LLVMMemoryBufferRef; OutMP:pLLVMModuleProviderRef; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMGetBitcodeModuleProvider'; -function LLVMGetBitcodeModuleProviderInContext(ContextRef:LLVMContextRef; MemBuf:LLVMMemoryBufferRef; OutMP:pLLVMModuleProviderRef; OutMessage:Ppchar):longint;cdecl;external libname name 'LLVMGetBitcodeModuleProviderInContext'; -{ BitWriter.h } -{===-- Operations on modules ---------------------------------------------=== } -{ Writes a module to an open file descriptor. Returns 0 on success. - Closes the Handle. Use dup first if this is not what you want. }function LLVMWriteBitcodeToFileHandle(M:LLVMModuleRef; Handle:longint):longint;cdecl;external libname name 'LLVMWriteBitcodeToFileHandle'; -{ Writes a module to the specified path. Returns 0 on success. }function LLVMWriteBitcodeToFile(M:LLVMModuleRef; Path:pchar):longint;cdecl;external libname name 'LLVMWriteBitcodeToFile'; -{ Target.h } - -const - LLVMBigEndian = 0; - LLVMLittleEndian = 1; -type - - LLVMByteOrdering = longint; - - LLVMTargetDataRef = LLVMOpaqueTargetData; - - LLVMStructLayoutRef = LLVMStructLayout; -{===-- Target Data -------------------------------------------------------=== } -{* Creates target data from a target layout string. - See the constructor llvm::TargetData::TargetData. } - -function LLVMCreateTargetData(StringRep:pchar):LLVMTargetDataRef;cdecl;external libname name 'LLVMCreateTargetData'; -{* Adds target data information to a pass manager. This does not take ownership - of the target data. - See the method llvm::PassManagerBase::add. } -procedure LLVMAddTargetData(para1:LLVMTargetDataRef; para2:LLVMPassManagerRef);cdecl;external libname name 'LLVMAddTargetData'; -{* Converts target data to a target layout string. The string must be disposed - with LLVMDisposeMessage. - See the constructor llvm::TargetData::TargetData. } -function LLVMCopyStringRepOfTargetData(para1:LLVMTargetDataRef):pchar;cdecl;external libname name 'LLVMCopyStringRepOfTargetData'; -{* Returns the byte order of a target, either LLVMBigEndian or - LLVMLittleEndian. - See the method llvm::TargetData::isLittleEndian. } -function LLVMByteOrder(para1:LLVMTargetDataRef):LLVMByteOrdering;cdecl;external libname name 'LLVMByteOrder'; -{* Returns the pointer size in bytes for a target. - See the method llvm::TargetData::getPointerSize. } -function LLVMPointerSize(para1:LLVMTargetDataRef):dword;cdecl;external libname name 'LLVMPointerSize'; -{* Returns the integer type that is the same size as a pointer on a target. - See the method llvm::TargetData::getIntPtrType. } -function LLVMIntPtrType(para1:LLVMTargetDataRef):LLVMTypeRef;cdecl;external libname name 'LLVMIntPtrType'; -{* Computes the size of a type in bytes for a target. - See the method llvm::TargetData::getTypeSizeInBits. } -function LLVMSizeOfTypeInBits(para1:LLVMTargetDataRef; para2:LLVMTypeRef):qword;cdecl;external libname name 'LLVMSizeOfTypeInBits'; -{* Computes the storage size of a type in bytes for a target. - See the method llvm::TargetData::getTypeStoreSize. } -function LLVMStoreSizeOfType(para1:LLVMTargetDataRef; para2:LLVMTypeRef):qword;cdecl;external libname name 'LLVMStoreSizeOfType'; -{* Computes the ABI size of a type in bytes for a target. - See the method llvm::TargetData::getTypeAllocSize. } -function LLVMABISizeOfType(para1:LLVMTargetDataRef; para2:LLVMTypeRef):qword;cdecl;external libname name 'LLVMABISizeOfType'; -{* Computes the ABI alignment of a type in bytes for a target. - See the method llvm::TargetData::getTypeABISize. } -function LLVMABIAlignmentOfType(para1:LLVMTargetDataRef; para2:LLVMTypeRef):dword;cdecl;external libname name 'LLVMABIAlignmentOfType'; -{* Computes the call frame alignment of a type in bytes for a target. - See the method llvm::TargetData::getTypeABISize. } -function LLVMCallFrameAlignmentOfType(para1:LLVMTargetDataRef; para2:LLVMTypeRef):dword;cdecl;external libname name 'LLVMCallFrameAlignmentOfType'; -{* Computes the preferred alignment of a type in bytes for a target. - See the method llvm::TargetData::getTypeABISize. } -function LLVMPreferredAlignmentOfType(para1:LLVMTargetDataRef; para2:LLVMTypeRef):dword;cdecl;external libname name 'LLVMPreferredAlignmentOfType'; -{* Computes the preferred alignment of a global variable in bytes for a target. - See the method llvm::TargetData::getPreferredAlignment. } -function LLVMPreferredAlignmentOfGlobal(para1:LLVMTargetDataRef; GlobalVar:LLVMValueRef):dword;cdecl;external libname name 'LLVMPreferredAlignmentOfGlobal'; -{* Computes the structure element that contains the byte offset for a target. - See the method llvm::StructLayout::getElementContainingOffset. } -function LLVMElementAtOffset(para1:LLVMTargetDataRef; StructTy:LLVMTypeRef; Offset:qword):dword;cdecl;external libname name 'LLVMElementAtOffset'; -{* Computes the byte offset of the indexed struct element for a target. - See the method llvm::StructLayout::getElementContainingOffset. } -function LLVMOffsetOfElement(para1:LLVMTargetDataRef; StructTy:LLVMTypeRef; Element:dword):qword;cdecl;external libname name 'LLVMOffsetOfElement'; -{* Struct layouts are speculatively cached. If a TargetDataRef is alive when - types are being refined and removed, this method must be called whenever a - struct type is removed to avoid a dangling pointer in this cache. - See the method llvm::TargetData::InvalidateStructLayoutInfo. } -procedure LLVMInvalidateStructLayout(para1:LLVMTargetDataRef; StructTy:LLVMTypeRef);cdecl;external libname name 'LLVMInvalidateStructLayout'; -{* Deallocates a TargetData. - See the destructor llvm::TargetData::~TargetData. } -procedure LLVMDisposeTargetData(para1:LLVMTargetDataRef);cdecl;external libname name 'LLVMDisposeTargetData'; -{ ExecutionEngine.h } -procedure LLVMLinkInJIT;cdecl;external libname name 'LLVMLinkInJIT'; -procedure LLVMLinkInInterpreter;cdecl;external libname name 'LLVMLinkInInterpreter'; -type - - LLVMGenericValueRef = LLVMOpaqueGenericValue; - - LLVMExecutionEngineRef = LLVMOpaqueExecutionEngine; -{===-- Operations on generic values --------------------------------------=== } - -function LLVMCreateGenericValueOfInt(Ty:LLVMTypeRef; N:qword; IsSigned:longint):LLVMGenericValueRef;cdecl;external libname name 'LLVMCreateGenericValueOfInt'; -function LLVMCreateGenericValueOfPointer(P:pointer):LLVMGenericValueRef;cdecl;external libname name 'LLVMCreateGenericValueOfPointer'; -function LLVMCreateGenericValueOfFloat(Ty:LLVMTypeRef; N:double):LLVMGenericValueRef;cdecl;external libname name 'LLVMCreateGenericValueOfFloat'; -function LLVMGenericValueIntWidth(GenValRef:LLVMGenericValueRef):dword;cdecl;external libname name 'LLVMGenericValueIntWidth'; -function LLVMGenericValueToInt(GenVal:LLVMGenericValueRef; IsSigned:longint):qword;cdecl;external libname name 'LLVMGenericValueToInt'; -function LLVMGenericValueToPointer(GenVal:LLVMGenericValueRef):pointer;cdecl;external libname name 'LLVMGenericValueToPointer'; -function LLVMGenericValueToFloat(TyRef:LLVMTypeRef; GenVal:LLVMGenericValueRef):double;cdecl;external libname name 'LLVMGenericValueToFloat'; -procedure LLVMDisposeGenericValue(GenVal:LLVMGenericValueRef);cdecl;external libname name 'LLVMDisposeGenericValue'; -{===-- Operations on execution engines -----------------------------------=== } -function LLVMCreateExecutionEngine(OutEE:pLLVMExecutionEngineRef; MP:LLVMModuleProviderRef; OutError:Ppchar):longint;cdecl;external libname name 'LLVMCreateExecutionEngine'; -function LLVMCreateInterpreter(OutInterp:pLLVMExecutionEngineRef; MP:LLVMModuleProviderRef; OutError:Ppchar):longint;cdecl;external libname name 'LLVMCreateInterpreter'; -function LLVMCreateJITCompiler(OutJIT:pLLVMExecutionEngineRef; MP:LLVMModuleProviderRef; OptLevel:dword; OutError:Ppchar):longint;cdecl;external libname name 'LLVMCreateJITCompiler'; -procedure LLVMDisposeExecutionEngine(EE:LLVMExecutionEngineRef);cdecl;external libname name 'LLVMDisposeExecutionEngine'; -procedure LLVMRunStaticConstructors(EE:LLVMExecutionEngineRef);cdecl;external libname name 'LLVMRunStaticConstructors'; -procedure LLVMRunStaticDestructors(EE:LLVMExecutionEngineRef);cdecl;external libname name 'LLVMRunStaticDestructors'; -(* Const before declarator ignored *) -(* Const before declarator ignored *) -function LLVMRunFunctionAsMain(EE:LLVMExecutionEngineRef; F:LLVMValueRef; ArgC:dword; ArgV:Ppchar; EnvP:Ppchar):longint;cdecl;external libname name 'LLVMRunFunctionAsMain'; -function LLVMRunFunction(EE:LLVMExecutionEngineRef; F:LLVMValueRef; NumArgs:dword; Args:pLLVMGenericValueRef):LLVMGenericValueRef;cdecl;external libname name 'LLVMRunFunction'; -procedure LLVMFreeMachineCodeForFunction(EE:LLVMExecutionEngineRef; F:LLVMValueRef);cdecl;external libname name 'LLVMFreeMachineCodeForFunction'; -procedure LLVMAddModuleProvider(EE:LLVMExecutionEngineRef; MP:LLVMModuleProviderRef);cdecl;external libname name 'LLVMAddModuleProvider'; -function LLVMRemoveModuleProvider(EE:LLVMExecutionEngineRef; MP:LLVMModuleProviderRef; OutMod:pLLVMModuleRef; OutError:Ppchar):longint;cdecl;external libname name 'LLVMRemoveModuleProvider'; -function LLVMFindFunction(EE:LLVMExecutionEngineRef; Name:pchar; OutFn:pLLVMValueRef):longint;cdecl;external libname name 'LLVMFindFunction'; -function LLVMGetExecutionEngineTargetData(EE:LLVMExecutionEngineRef):LLVMTargetDataRef;cdecl;external libname name 'LLVMGetExecutionEngineTargetData'; -procedure LLVMAddGlobalMapping(EE:LLVMExecutionEngineRef; Global:LLVMValueRef; Addr:pointer);cdecl;external libname name 'LLVMAddGlobalMapping'; -function LLVMGetPointerToGlobal(EE:LLVMExecutionEngineRef; Global:LLVMValueRef):pointer;cdecl;external libname name 'LLVMGetPointerToGlobal'; -{ LinkTimeOptimizer.h } -{/ This provides a dummy type for pointers to the LTO object. } -type - - llvm_lto_t = pointer; -{/ This provides a C-visible enumerator to manage status codes. } -{/ This should map exactly onto the C++ enumerator LTOStatus. } -{ Added C-specific error codes } - - llvm_lto_status = (LLVM_LTO_UNKNOWN,LLVM_LTO_OPT_SUCCESS, - LLVM_LTO_READ_SUCCESS,LLVM_LTO_READ_FAILURE, - LLVM_LTO_WRITE_FAILURE,LLVM_LTO_NO_TARGET, - LLVM_LTO_NO_WORK,LLVM_LTO_MODULE_MERGE_FAILURE, - LLVM_LTO_ASM_FAILURE,LLVM_LTO_NULL_OBJECT - ); - llvm_lto_status_t = llvm_lto_status; -{/ This provides C interface to initialize link time optimizer. This allows } -{/ linker to use dlopen() interface to dynamically load LinkTimeOptimizer. } -{/ extern "C" helps, because dlopen() interface uses name to find the symbol. } - -function llvm_create_optimizer:llvm_lto_t;cdecl;external libname name 'llvm_create_optimizer'; -procedure llvm_destroy_optimizer(lto:llvm_lto_t);cdecl;external libname name 'llvm_destroy_optimizer'; -function llvm_read_object_file(lto:llvm_lto_t; input_filename:pchar):llvm_lto_status_t;cdecl;external libname name 'llvm_read_object_file'; -function llvm_optimize_modules(lto:llvm_lto_t; output_filename:pchar):llvm_lto_status_t;cdecl;external libname name 'llvm_optimize_modules'; -{ lto.h } - -const - LTO_API_VERSION = 3; -{ log2 of alignment } -type - - lto_symbol_attributes = (LTO_SYMBOL_ALIGNMENT_MASK := $0000001F,LTO_SYMBOL_PERMISSIONS_MASK := $000000E0, - LTO_SYMBOL_PERMISSIONS_CODE := $000000A0,LTO_SYMBOL_PERMISSIONS_DATA := $000000C0, - LTO_SYMBOL_PERMISSIONS_RODATA := $00000080,LTO_SYMBOL_DEFINITION_MASK := $00000700, - LTO_SYMBOL_DEFINITION_REGULAR := $00000100,LTO_SYMBOL_DEFINITION_TENTATIVE := $00000200, - LTO_SYMBOL_DEFINITION_WEAK := $00000300,LTO_SYMBOL_DEFINITION_UNDEFINED := $00000400, - LTO_SYMBOL_DEFINITION_WEAKUNDEF := $00000500, - LTO_SYMBOL_SCOPE_MASK := $00003800,LTO_SYMBOL_SCOPE_INTERNAL := $00000800, - LTO_SYMBOL_SCOPE_HIDDEN := $00001000,LTO_SYMBOL_SCOPE_PROTECTED := $00002000, - LTO_SYMBOL_SCOPE_DEFAULT := $00001800); - - lto_debug_model = (LTO_DEBUG_MODEL_NONE := 0,LTO_DEBUG_MODEL_DWARF := 1 - ); - - lto_codegen_model = (LTO_CODEGEN_PIC_MODEL_STATIC := 0,LTO_CODEGEN_PIC_MODEL_DYNAMIC := 1, - LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC := 2 - ); -{* opaque reference to a loaded object module } - - lto_module_t = LTOModule; -{* opaque reference to a code generator } - - lto_code_gen_t = LTOCodeGenerator; -{* - * Returns a printable string. - } - -function lto_get_version:pchar;cdecl;external libname name 'lto_get_version'; -{* - * Returns the last error string or NULL if last operation was sucessful. - } -function lto_get_error_message:pchar;cdecl;external libname name 'lto_get_error_message'; -{* - * Checks if a file is a loadable object file. - } -function lto_module_is_object_file(path:pchar):bool;cdecl;external libname name 'lto_module_is_object_file'; -{* - * Checks if a file is a loadable object compiled for requested target. - } -function lto_module_is_object_file_for_target(path:pchar; target_triple_prefix:pchar):bool;cdecl;external libname name 'lto_module_is_object_file_for_target'; -{* - * Checks if a buffer is a loadable object file. - } -function lto_module_is_object_file_in_memory(mem:pointer; length:size_t):bool;cdecl;external libname name 'lto_module_is_object_file_in_memory'; -{* - * Checks if a buffer is a loadable object compiled for requested target. - } -function lto_module_is_object_file_in_memory_for_target(mem:pointer; length:size_t; target_triple_prefix:pchar):bool;cdecl;external libname name 'lto_module_is_object_file_in_memory_for_target'; -{* - * Loads an object file from disk. - * Returns NULL on error (check lto_get_error_message() for details). - } -function lto_module_create(path:pchar):lto_module_t;cdecl;external libname name 'lto_module_create'; -{* - * Loads an object file from memory. - * Returns NULL on error (check lto_get_error_message() for details). - } -function lto_module_create_from_memory(mem:pointer; length:size_t):lto_module_t;cdecl;external libname name 'lto_module_create_from_memory'; -{* - * Frees all memory internally allocated by the module. - * Upon return the lto_module_t is no longer valid. - } -procedure lto_module_dispose(module:lto_module_t);cdecl;external libname name 'lto_module_dispose'; -{* - * Returns triple string which the object module was compiled under. - } -function lto_module_get_target_triple(module:lto_module_t):pchar;cdecl;external libname name 'lto_module_get_target_triple'; -{* - * Returns the number of symbols in the object module. - } -function lto_module_get_num_symbols(module:lto_module_t):dword;cdecl;external libname name 'lto_module_get_num_symbols'; -{* - * Returns the name of the ith symbol in the object module. - } -function lto_module_get_symbol_name(module:lto_module_t; index:dword):pchar;cdecl;external libname name 'lto_module_get_symbol_name'; -{* - * Returns the attributes of the ith symbol in the object module. - } -function lto_module_get_symbol_attribute(module:lto_module_t; index:dword):lto_symbol_attributes;cdecl;external libname name 'lto_module_get_symbol_attribute'; -{* - * Instantiates a code generator. - * Returns NULL on error (check lto_get_error_message() for details). - } -function lto_codegen_create:lto_code_gen_t;cdecl;external libname name 'lto_codegen_create'; -{* - * Frees all code generator and all memory it internally allocated. - * Upon return the lto_code_gen_t is no longer valid. - } -procedure lto_codegen_dispose(para1:lto_code_gen_t);cdecl;external libname name 'lto_codegen_dispose'; -{* - * Add an object module to the set of modules for which code will be generated. - * Returns true on error (check lto_get_error_message() for details). - } -function lto_codegen_add_module(cg:lto_code_gen_t; module:lto_module_t):bool;cdecl;external libname name 'lto_codegen_add_module'; -{* - * Sets if debug info should be generated. - * Returns true on error (check lto_get_error_message() for details). - } -function lto_codegen_set_debug_model(cg:lto_code_gen_t; para2:lto_debug_model):bool;cdecl;external libname name 'lto_codegen_set_debug_model'; -{* - * Sets which PIC code model to generated. - * Returns true on error (check lto_get_error_message() for details). - } -function lto_codegen_set_pic_model(cg:lto_code_gen_t; - para2: lto_codegen_model): bool; -cdecl;external libname name 'lto_codegen_set_pic_model'; -{* - * Sets the location of the "gcc" to run. If not set, libLTO will search for - * "gcc" on the path. - } -procedure lto_codegen_set_gcc_path(cg:lto_code_gen_t; path:pchar); -cdecl;external libname name 'lto_codegen_set_gcc_path'; -{* - * Sets the location of the assembler tool to run. If not set, libLTO - * will use gcc to invoke the assembler. - } -procedure lto_codegen_set_assembler_path(cg:lto_code_gen_t; path:pchar); -cdecl;external libname name 'lto_codegen_set_assembler_path'; -{* - * Adds to a list of all global symbols that must exist in the final - * generated code. If a function is not listed, it might be - * inlined into every usage and optimized away. - } -procedure lto_codegen_add_must_preserve_symbol(cg:lto_code_gen_t; symbol:pchar); -cdecl;external libname name 'lto_codegen_add_must_preserve_symbol'; -{* - * Writes a new object file at the specified path that contains the - * merged contents of all modules added so far. - * Returns true on error (check lto_get_error_message() for details). - } -function lto_codegen_write_merged_modules(cg:lto_code_gen_t; path:pchar):bool; -cdecl;external libname name 'lto_codegen_write_merged_modules'; -{* - * Generates code for all added modules into one native object file. - * On sucess returns a pointer to a generated mach-o/ELF buffer and - * length set to the buffer size. The buffer is owned by the - * lto_code_gen_t and will be freed when lto_codegen_dispose() - * is called, or lto_codegen_compile() is called again. - * On failure, returns NULL (check lto_get_error_message() for details). - } -function lto_codegen_compile(cg:lto_code_gen_t; var length: int): pointer; -cdecl; external libname name 'lto_codegen_compile'; -{* - * Sets options to help debug codegen bugs. - } -procedure lto_codegen_debug_options(cg: lto_code_gen_t; para2: Pchar); -cdecl;external libname name 'lto_codegen_debug_options'; - -implementation - -end. diff --git a/llvm/llvm_orig.nim b/llvm/llvm_orig.nim deleted file mode 100755 index 8e09f9c68..000000000 --- a/llvm/llvm_orig.nim +++ /dev/null @@ -1,1569 +0,0 @@ - -const - libname* = "" #Setup as you need - -type - PLLVMBasicBlockRef* = ptr LLVMBasicBlockRef - PLLVMExecutionEngineRef* = ptr LLVMExecutionEngineRef - PLLVMGenericValueRef* = ptr LLVMGenericValueRef - PLLVMMemoryBufferRef* = ptr LLVMMemoryBufferRef - PLLVMModuleProviderRef* = ptr LLVMModuleProviderRef - PLLVMModuleRef* = ptr LLVMModuleRef - PLLVMTypeRef* = ptr LLVMTypeRef - PLLVMValueRef* = ptr LLVMValueRef # Core.h - # Opaque types. - #* - # * The top-level container for all LLVM global data. See the LLVMContext class. - # - -type - LLVMContextRef* = LLVMOpaqueContext #* - # * The top-level container for all other LLVM Intermediate Representation (IR) - # * objects. See the llvm::Module class. - # - LLVMModuleRef* = LLVMOpaqueModule #* - # * Each value in the LLVM IR has a type, an LLVMTypeRef. See the llvm::Type - # * class. - # - LLVMTypeRef* = LLVMOpaqueType #* - # * When building recursive types using LLVMRefineType, LLVMTypeRef values may - # * become invalid; use LLVMTypeHandleRef to resolve this problem. See the - # * llvm::AbstractTypeHolder class. - # - LLVMTypeHandleRef* = LLVMOpaqueTypeHandle - LLVMValueRef* = LLVMOpaqueValue - LLVMBasicBlockRef* = LLVMOpaqueBasicBlock - LLVMBuilderRef* = LLVMOpaqueBuilder # Used to provide a module to JIT or interpreter. - # * See the llvm::ModuleProvider class. - # - LLVMModuleProviderRef* = LLVMOpaqueModuleProvider # Used to provide a module to JIT or interpreter. - # * See the llvm::MemoryBuffer class. - # - LLVMMemoryBufferRef* = LLVMOpaqueMemoryBuffer #* See the llvm::PassManagerBase class. - LLVMPassManagerRef* = LLVMOpaquePassManager #* - # * Used to iterate through the uses of a Value, allowing access to all Values - # * that use this Value. See the llvm::Use and llvm::value_use_iterator classes. - # - LLVMUseIteratorRef* = LLVMOpaqueUseIterator - LLVMAttribute* = enum - LLVMZExtAttribute = 1 shl 0, LLVMSExtAttribute = 1 shl 1, - LLVMNoReturnAttribute = 1 shl 2, LLVMInRegAttribute = 1 shl 3, - LLVMStructRetAttribute = 1 shl 4, LLVMNoUnwindAttribute = 1 shl 5, - LLVMNoAliasAttribute = 1 shl 6, LLVMByValAttribute = 1 shl 7, - LLVMNestAttribute = 1 shl 8, LLVMReadNoneAttribute = 1 shl 9, - LLVMReadOnlyAttribute = 1 shl 10, LLVMNoInlineAttribute = 1 shl 11, - LLVMAlwaysInlineAttribute = 1 shl 12, - LLVMOptimizeForSizeAttribute = 1 shl 13, - LLVMStackProtectAttribute = 1 shl 14, - LLVMStackProtectReqAttribute = 1 shl 15, LLVMNoCaptureAttribute = 1 shl - 21, LLVMNoRedZoneAttribute = 1 shl 22, - LLVMNoImplicitFloatAttribute = 1 shl 23, LLVMNakedAttribute = 1 shl 24, - LLVMInlineHintAttribute = 1 shl 25 - LLVMOpcode* = enum #*< type with no size - #*< 32 bit floating point type - #*< 64 bit floating point type - #*< 80 bit floating point type (X87) - #*< 128 bit floating point type (112-bit mantissa) - #*< 128 bit floating point type (two 64-bits) - #*< Labels - #*< Arbitrary bit width integers - #*< Functions - #*< Structures - #*< Arrays - #*< Pointers - #*< Opaque: type with unknown structure - #*< SIMD 'packed' format, or other vector type - #*< Metadata - LLVMRet = 1, LLVMBr = 2, LLVMSwitch = 3, LLVMInvoke = 4, LLVMUnwind = 5, - LLVMUnreachable = 6, LLVMAdd = 7, LLVMFAdd = 8, LLVMSub = 9, LLVMFSub = 10, - LLVMMul = 11, LLVMFMul = 12, LLVMUDiv = 13, LLVMSDiv = 14, LLVMFDiv = 15, - LLVMURem = 16, LLVMSRem = 17, LLVMFRem = 18, LLVMShl = 19, LLVMLShr = 20, - LLVMAShr = 21, LLVMAnd = 22, LLVMOr = 23, LLVMXor = 24, LLVMMalloc = 25, - LLVMFree = 26, LLVMAlloca = 27, LLVMLoad = 28, LLVMStore = 29, - LLVMGetElementPtr = 30, LLVMTrunk = 31, LLVMZExt = 32, LLVMSExt = 33, - LLVMFPToUI = 34, LLVMFPToSI = 35, LLVMUIToFP = 36, LLVMSIToFP = 37, - LLVMFPTrunc = 38, LLVMFPExt = 39, LLVMPtrToInt = 40, LLVMIntToPtr = 41, - LLVMBitCast = 42, LLVMICmp = 43, LLVMFCmp = 44, LLVMPHI = 45, LLVMCall = 46, - LLVMSelect = 47, LLVMVAArg = 50, LLVMExtractElement = 51, - LLVMInsertElement = 52, LLVMShuffleVector = 53, LLVMExtractValue = 54, - LLVMInsertValue = 55 - LLVMTypeKind* = enum #*< Externally visible function - #*< Keep one copy of function when linking (inline) - #*< Same, but only replaced by something - # equivalent. - #*< Keep one copy of function when linking (weak) - #*< Same, but only replaced by something - # equivalent. - #*< Special purpose, only applies to global arrays - #*< Rename collisions when linking (static - # functions) - #*< Like Internal, but omit from symbol table - #*< Function to be imported from DLL - #*< Function to be accessible from DLL - #*< ExternalWeak linkage description - #*< Stand-in functions for streaming fns from - # bitcode - #*< Tentative definitions - #*< Like Private, but linker removes. - LLVMVoidTypeKind, LLVMFloatTypeKind, LLVMDoubleTypeKind, - LLVMX86_FP80TypeKind, LLVMFP128TypeKind, LLVMPPC_FP128TypeKind, - LLVMLabelTypeKind, LLVMIntegerTypeKind, LLVMFunctionTypeKind, - LLVMStructTypeKind, LLVMArrayTypeKind, LLVMPointerTypeKind, - LLVMOpaqueTypeKind, LLVMVectorTypeKind, LLVMMetadataTypeKind - LLVMLinkage* = enum #*< The GV is visible - #*< The GV is hidden - #*< The GV is protected - LLVMExternalLinkage, LLVMAvailableExternallyLinkage, LLVMLinkOnceAnyLinkage, - LLVMLinkOnceODRLinkage, LLVMWeakAnyLinkage, LLVMWeakODRLinkage, - LLVMAppendingLinkage, LLVMInternalLinkage, LLVMPrivateLinkage, - LLVMDLLImportLinkage, LLVMDLLExportLinkage, LLVMExternalWeakLinkage, - LLVMGhostLinkage, LLVMCommonLinkage, LLVMLinkerPrivateLinkage - LLVMVisibility* = enum - LLVMDefaultVisibility, LLVMHiddenVisibility, LLVMProtectedVisibility - LLVMCallConv* = enum #*< equal - #*< not equal - #*< unsigned greater than - #*< unsigned greater or equal - #*< unsigned less than - #*< unsigned less or equal - #*< signed greater than - #*< signed greater or equal - #*< signed less than - #*< signed less or equal - LLVMCCallConv = 0, LLVMFastCallConv = 8, LLVMColdCallConv = 9, - LLVMX86StdcallCallConv = 64, LLVMX86FastcallCallConv = 65 - LLVMIntPredicate* = enum #*< Always false (always folded) - #*< True if ordered and equal - #*< True if ordered and greater than - #*< True if ordered and greater than or equal - #*< True if ordered and less than - #*< True if ordered and less than or equal - #*< True if ordered and operands are unequal - #*< True if ordered (no nans) - #*< True if unordered: isnan(X) | isnan(Y) - #*< True if unordered or equal - #*< True if unordered or greater than - #*< True if unordered, greater than, or equal - #*< True if unordered or less than - #*< True if unordered, less than, or equal - #*< True if unordered or not equal - #*< Always true (always folded) - LLVMIntEQ = 32, LLVMIntNE, LLVMIntUGT, LLVMIntUGE, LLVMIntULT, LLVMIntULE, - LLVMIntSGT, LLVMIntSGE, LLVMIntSLT, LLVMIntSLE - LLVMRealPredicate* = enum #===-- Error handling ----------------------------------------------------=== - LLVMRealPredicateFalse, LLVMRealOEQ, LLVMRealOGT, LLVMRealOGE, LLVMRealOLT, - LLVMRealOLE, LLVMRealONE, LLVMRealORD, LLVMRealUNO, LLVMRealUEQ, - LLVMRealUGT, LLVMRealUGE, LLVMRealULT, LLVMRealULE, LLVMRealUNE, - LLVMRealPredicateTrue - -proc LLVMDisposeMessage*(Message: cstring){.cdecl, dynlib: libname, - importc: "LLVMDisposeMessage".} - #===-- Modules -----------------------------------------------------------=== - # Create and destroy contexts. -proc LLVMContextCreate*(): LLVMContextRef{.cdecl, dynlib: libname, - importc: "LLVMContextCreate".} -proc LLVMGetGlobalContext*(): LLVMContextRef{.cdecl, dynlib: libname, - importc: "LLVMGetGlobalContext".} -proc LLVMContextDispose*(C: LLVMContextRef){.cdecl, dynlib: libname, - importc: "LLVMContextDispose".} - # Create and destroy modules. - #* See llvm::Module::Module. -proc LLVMModuleCreateWithName*(ModuleID: cstring): LLVMModuleRef{.cdecl, - dynlib: libname, importc: "LLVMModuleCreateWithName".} -proc LLVMModuleCreateWithNameInContext*(ModuleID: cstring, C: LLVMContextRef): LLVMModuleRef{. - cdecl, dynlib: libname, importc: "LLVMModuleCreateWithNameInContext".} - #* See llvm::Module::~Module. -proc LLVMDisposeModule*(M: LLVMModuleRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeModule".} - #* Data layout. See Module::getDataLayout. -proc LLVMGetDataLayout*(M: LLVMModuleRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetDataLayout".} -proc LLVMSetDataLayout*(M: LLVMModuleRef, Triple: cstring){.cdecl, - dynlib: libname, importc: "LLVMSetDataLayout".} - #* Target triple. See Module::getTargetTriple. -proc LLVMGetTarget*(M: LLVMModuleRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetTarget".} -proc LLVMSetTarget*(M: LLVMModuleRef, Triple: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetTarget".} - #* See Module::addTypeName. -proc LLVMAddTypeName*(M: LLVMModuleRef, Name: cstring, Ty: LLVMTypeRef): int32{. - cdecl, dynlib: libname, importc: "LLVMAddTypeName".} -proc LLVMDeleteTypeName*(M: LLVMModuleRef, Name: cstring){.cdecl, - dynlib: libname, importc: "LLVMDeleteTypeName".} -proc LLVMGetTypeByName*(M: LLVMModuleRef, Name: cstring): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMGetTypeByName".} - #* See Module::dump. -proc LLVMDumpModule*(M: LLVMModuleRef){.cdecl, dynlib: libname, - importc: "LLVMDumpModule".} - #===-- Types -------------------------------------------------------------=== - # LLVM types conform to the following hierarchy: - # * - # * types: - # * integer type - # * real type - # * function type - # * sequence types: - # * array type - # * pointer type - # * vector type - # * void type - # * label type - # * opaque type - # - #* See llvm::LLVMTypeKind::getTypeID. -proc LLVMGetTypeKind*(Ty: LLVMTypeRef): LLVMTypeKind{.cdecl, dynlib: libname, - importc: "LLVMGetTypeKind".} - #* See llvm::LLVMType::getContext. -proc LLVMGetTypeContext*(Ty: LLVMTypeRef): LLVMContextRef{.cdecl, - dynlib: libname, importc: "LLVMGetTypeContext".} - # Operations on integer types -proc LLVMInt1TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMInt1TypeInContext".} -proc LLVMInt8TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMInt8TypeInContext".} -proc LLVMInt16TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMInt16TypeInContext".} -proc LLVMInt32TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMInt32TypeInContext".} -proc LLVMInt64TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMInt64TypeInContext".} -proc LLVMIntTypeInContext*(C: LLVMContextRef, NumBits: dword): LLVMTypeRef{. - cdecl, dynlib: libname, importc: "LLVMIntTypeInContext".} -proc LLVMInt1Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt1Type".} -proc LLVMInt8Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt8Type".} -proc LLVMInt16Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt16Type".} -proc LLVMInt32Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt32Type".} -proc LLVMInt64Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMInt64Type".} -proc LLVMIntType*(NumBits: dword): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMIntType".} -proc LLVMGetIntTypeWidth*(IntegerTy: LLVMTypeRef): dword{.cdecl, - dynlib: libname, importc: "LLVMGetIntTypeWidth".} - # Operations on real types -proc LLVMFloatTypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMFloatTypeInContext".} -proc LLVMDoubleTypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMDoubleTypeInContext".} -proc LLVMX86FP80TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMX86FP80TypeInContext".} -proc LLVMFP128TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMFP128TypeInContext".} -proc LLVMPPCFP128TypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMPPCFP128TypeInContext".} -proc LLVMFloatType*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMFloatType".} -proc LLVMDoubleType*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMDoubleType".} -proc LLVMX86FP80Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMX86FP80Type".} -proc LLVMFP128Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMFP128Type".} -proc LLVMPPCFP128Type*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMPPCFP128Type".} - # Operations on function types -proc LLVMFunctionType*(ReturnType: LLVMTypeRef, ParamTypes: pLLVMTypeRef, - ParamCount: dword, IsVarArg: int32): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMFunctionType".} -proc LLVMIsFunctionVarArg*(FunctionTy: LLVMTypeRef): int32{.cdecl, - dynlib: libname, importc: "LLVMIsFunctionVarArg".} -proc LLVMGetReturnType*(FunctionTy: LLVMTypeRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMGetReturnType".} -proc LLVMCountParamTypes*(FunctionTy: LLVMTypeRef): dword{.cdecl, - dynlib: libname, importc: "LLVMCountParamTypes".} -proc LLVMGetParamTypes*(FunctionTy: LLVMTypeRef, Dest: pLLVMTypeRef){.cdecl, - dynlib: libname, importc: "LLVMGetParamTypes".} - # Operations on struct types -proc LLVMStructTypeInContext*(C: LLVMContextRef, ElementTypes: pLLVMTypeRef, - ElementCount: dword, isPacked: int32): LLVMTypeRef{. - cdecl, dynlib: libname, importc: "LLVMStructTypeInContext".} -proc LLVMStructType*(ElementTypes: pLLVMTypeRef, ElementCount: dword, - isPacked: int32): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMStructType".} -proc LLVMCountStructElementTypes*(StructTy: LLVMTypeRef): dword{.cdecl, - dynlib: libname, importc: "LLVMCountStructElementTypes".} -proc LLVMGetStructElementTypes*(StructTy: LLVMTypeRef, Dest: pLLVMTypeRef){. - cdecl, dynlib: libname, importc: "LLVMGetStructElementTypes".} -proc LLVMIsPackedStruct*(StructTy: LLVMTypeRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsPackedStruct".} - # Operations on array, pointer, and vector types (sequence types) -proc LLVMArrayType*(ElementType: LLVMTypeRef, ElementCount: dword): LLVMTypeRef{. - cdecl, dynlib: libname, importc: "LLVMArrayType".} -proc LLVMPointerType*(ElementType: LLVMTypeRef, AddressSpace: dword): LLVMTypeRef{. - cdecl, dynlib: libname, importc: "LLVMPointerType".} -proc LLVMVectorType*(ElementType: LLVMTypeRef, ElementCount: dword): LLVMTypeRef{. - cdecl, dynlib: libname, importc: "LLVMVectorType".} -proc LLVMGetElementType*(Ty: LLVMTypeRef): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMGetElementType".} -proc LLVMGetArrayLength*(ArrayTy: LLVMTypeRef): dword{.cdecl, dynlib: libname, - importc: "LLVMGetArrayLength".} -proc LLVMGetPointerAddressSpace*(PointerTy: LLVMTypeRef): dword{.cdecl, - dynlib: libname, importc: "LLVMGetPointerAddressSpace".} -proc LLVMGetVectorSize*(VectorTy: LLVMTypeRef): dword{.cdecl, dynlib: libname, - importc: "LLVMGetVectorSize".} - # Operations on other types -proc LLVMVoidTypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMVoidTypeInContext".} -proc LLVMLabelTypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMLabelTypeInContext".} -proc LLVMOpaqueTypeInContext*(C: LLVMContextRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMOpaqueTypeInContext".} -proc LLVMVoidType*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMVoidType".} -proc LLVMLabelType*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMLabelType".} -proc LLVMOpaqueType*(): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMOpaqueType".} - # Operations on type handles -proc LLVMCreateTypeHandle*(PotentiallyAbstractTy: LLVMTypeRef): LLVMTypeHandleRef{. - cdecl, dynlib: libname, importc: "LLVMCreateTypeHandle".} -proc LLVMRefineType*(AbstractTy: LLVMTypeRef, ConcreteTy: LLVMTypeRef){.cdecl, - dynlib: libname, importc: "LLVMRefineType".} -proc LLVMResolveTypeHandle*(TypeHandle: LLVMTypeHandleRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMResolveTypeHandle".} -proc LLVMDisposeTypeHandle*(TypeHandle: LLVMTypeHandleRef){.cdecl, - dynlib: libname, importc: "LLVMDisposeTypeHandle".} - # Operations on all values -proc LLVMTypeOf*(Val: LLVMValueRef): LLVMTypeRef{.cdecl, dynlib: libname, - importc: "LLVMTypeOf".} -proc LLVMGetValueName*(Val: LLVMValueRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetValueName".} -proc LLVMSetValueName*(Val: LLVMValueRef, Name: cstring){.cdecl, - dynlib: libname, importc: "LLVMSetValueName".} -proc LLVMDumpValue*(Val: LLVMValueRef){.cdecl, dynlib: libname, - importc: "LLVMDumpValue".} -proc LLVMReplaceAllUsesWith*(OldVal: LLVMValueRef, NewVal: LLVMValueRef){.cdecl, - dynlib: libname, importc: "LLVMReplaceAllUsesWith".} - # Conversion functions. Return the input value if it is an instance of the - # specified class, otherwise NULL. See llvm::dyn_cast_or_null<>. -proc LLVMIsAArgument*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAArgument".} -proc LLVMIsABasicBlock*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsABasicBlock".} -proc LLVMIsAInlineAsm*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAInlineAsm".} -proc LLVMIsAUser*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAUser".} -proc LLVMIsAConstant*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAConstant".} -proc LLVMIsAConstantAggregateZero*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantAggregateZero".} -proc LLVMIsAConstantArray*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantArray".} -proc LLVMIsAConstantExpr*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantExpr".} -proc LLVMIsAConstantFP*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantFP".} -proc LLVMIsAConstantInt*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantInt".} -proc LLVMIsAConstantPointerNull*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantPointerNull".} -proc LLVMIsAConstantStruct*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantStruct".} -proc LLVMIsAConstantVector*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAConstantVector".} -proc LLVMIsAGlobalValue*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAGlobalValue".} -proc LLVMIsAFunction*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFunction".} -proc LLVMIsAGlobalAlias*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAGlobalAlias".} -proc LLVMIsAGlobalVariable*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAGlobalVariable".} -proc LLVMIsAUndefValue*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAUndefValue".} -proc LLVMIsAInstruction*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAInstruction".} -proc LLVMIsABinaryOperator*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsABinaryOperator".} -proc LLVMIsACallInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsACallInst".} -proc LLVMIsAIntrinsicInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAIntrinsicInst".} -proc LLVMIsADbgInfoIntrinsic*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsADbgInfoIntrinsic".} -proc LLVMIsADbgDeclareInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsADbgDeclareInst".} -proc LLVMIsADbgFuncStartInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsADbgFuncStartInst".} -proc LLVMIsADbgRegionEndInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsADbgRegionEndInst".} -proc LLVMIsADbgRegionStartInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsADbgRegionStartInst".} -proc LLVMIsADbgStopPointInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsADbgStopPointInst".} -proc LLVMIsAEHSelectorInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAEHSelectorInst".} -proc LLVMIsAMemIntrinsic*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAMemIntrinsic".} -proc LLVMIsAMemCpyInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAMemCpyInst".} -proc LLVMIsAMemMoveInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAMemMoveInst".} -proc LLVMIsAMemSetInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAMemSetInst".} -proc LLVMIsACmpInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsACmpInst".} -proc LLVMIsAFCmpInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFCmpInst".} -proc LLVMIsAICmpInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAICmpInst".} -proc LLVMIsAExtractElementInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAExtractElementInst".} -proc LLVMIsAGetElementPtrInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAGetElementPtrInst".} -proc LLVMIsAInsertElementInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAInsertElementInst".} -proc LLVMIsAInsertValueInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAInsertValueInst".} -proc LLVMIsAPHINode*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAPHINode".} -proc LLVMIsASelectInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsASelectInst".} -proc LLVMIsAShuffleVectorInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAShuffleVectorInst".} -proc LLVMIsAStoreInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAStoreInst".} -proc LLVMIsATerminatorInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsATerminatorInst".} -proc LLVMIsABranchInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsABranchInst".} -proc LLVMIsAInvokeInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAInvokeInst".} -proc LLVMIsAReturnInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAReturnInst".} -proc LLVMIsASwitchInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsASwitchInst".} -proc LLVMIsAUnreachableInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAUnreachableInst".} -proc LLVMIsAUnwindInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAUnwindInst".} -proc LLVMIsAUnaryInstruction*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAUnaryInstruction".} -proc LLVMIsAAllocationInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAAllocationInst".} -proc LLVMIsAAllocaInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAAllocaInst".} -proc LLVMIsACastInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsACastInst".} -proc LLVMIsABitCastInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsABitCastInst".} -proc LLVMIsAFPExtInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFPExtInst".} -proc LLVMIsAFPToSIInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAFPToSIInst".} -proc LLVMIsAFPToUIInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAFPToUIInst".} -proc LLVMIsAFPTruncInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAFPTruncInst".} -proc LLVMIsAIntToPtrInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAIntToPtrInst".} -proc LLVMIsAPtrToIntInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAPtrToIntInst".} -proc LLVMIsASExtInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsASExtInst".} -proc LLVMIsASIToFPInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsASIToFPInst".} -proc LLVMIsATruncInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsATruncInst".} -proc LLVMIsAUIToFPInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAUIToFPInst".} -proc LLVMIsAZExtInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAZExtInst".} -proc LLVMIsAExtractValueInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMIsAExtractValueInst".} -proc LLVMIsAFreeInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAFreeInst".} -proc LLVMIsALoadInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsALoadInst".} -proc LLVMIsAVAArgInst*(Val: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMIsAVAArgInst".} - # Operations on Uses -proc LLVMGetFirstUse*(Val: LLVMValueRef): LLVMUseIteratorRef{.cdecl, - dynlib: libname, importc: "LLVMGetFirstUse".} -proc LLVMGetNextUse*(U: LLVMUseIteratorRef): LLVMUseIteratorRef{.cdecl, - dynlib: libname, importc: "LLVMGetNextUse".} -proc LLVMGetUser*(U: LLVMUseIteratorRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetUser".} -proc LLVMGetUsedValue*(U: LLVMUseIteratorRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetUsedValue".} - # Operations on Users -proc LLVMGetOperand*(Val: LLVMValueRef, Index: dword): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetOperand".} - # Operations on constants of any type -proc LLVMConstNull*(Ty: LLVMTypeRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstNull".} - # all zeroes -proc LLVMConstAllOnes*(Ty: LLVMTypeRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstAllOnes".} - # only for int/vector -proc LLVMGetUndef*(Ty: LLVMTypeRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetUndef".} -proc LLVMIsConstant*(Val: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsConstant".} -proc LLVMIsNull*(Val: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsNull".} -proc LLVMIsUndef*(Val: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsUndef".} -proc LLVMConstPointerNull*(Ty: LLVMTypeRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstPointerNull".} - # Operations on scalar constants -proc LLVMConstInt*(IntTy: LLVMTypeRef, N: qword, SignExtend: int32): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstInt".} -proc LLVMConstIntOfString*(IntTy: LLVMTypeRef, Text: cstring, Radix: uint8_t): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstIntOfString".} -proc LLVMConstIntOfStringAndSize*(IntTy: LLVMTypeRef, Text: cstring, - SLen: dword, Radix: uint8_t): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstIntOfStringAndSize".} -proc LLVMConstReal*(RealTy: LLVMTypeRef, N: float64): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstReal".} -proc LLVMConstRealOfString*(RealTy: LLVMTypeRef, Text: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstRealOfString".} -proc LLVMConstRealOfStringAndSize*(RealTy: LLVMTypeRef, Text: cstring, - SLen: dword): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstRealOfStringAndSize".} -proc LLVMConstIntGetZExtValue*(ConstantVal: LLVMValueRef): qword{.cdecl, - dynlib: libname, importc: "LLVMConstIntGetZExtValue".} -proc LLVMConstIntGetSExtValue*(ConstantVal: LLVMValueRef): int64{.cdecl, - dynlib: libname, importc: "LLVMConstIntGetSExtValue".} - # Operations on composite constants -proc LLVMConstStringInContext*(C: LLVMContextRef, Str: cstring, len: dword, - DontNullTerminate: int32): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstStringInContext".} -proc LLVMConstStructInContext*(C: LLVMContextRef, ConstantVals: pLLVMValueRef, - Count: dword, isPacked: int32): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstStructInContext".} -proc LLVMConstString*(Str: cstring, len: dword, DontNullTerminate: int32): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstString".} -proc LLVMConstArray*(ElementTy: LLVMTypeRef, ConstantVals: pLLVMValueRef, - len: dword): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstArray".} -proc LLVMConstStruct*(ConstantVals: pLLVMValueRef, Count: dword, isPacked: int32): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstStruct".} -proc LLVMConstVector*(ScalarConstantVals: pLLVMValueRef, Size: dword): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstVector".} - # Constant expressions -proc LLVMGetConstOpcode*(ConstantVal: LLVMValueRef): LLVMOpcode{.cdecl, - dynlib: libname, importc: "LLVMGetConstOpcode".} -proc LLVMAlignOf*(Ty: LLVMTypeRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMAlignOf".} -proc LLVMSizeOf*(Ty: LLVMTypeRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMSizeOf".} -proc LLVMConstNeg*(ConstantVal: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstNeg".} -proc LLVMConstFNeg*(ConstantVal: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFNeg".} -proc LLVMConstNot*(ConstantVal: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstNot".} -proc LLVMConstAdd*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstAdd".} -proc LLVMConstNSWAdd*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstNSWAdd".} -proc LLVMConstFAdd*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFAdd".} -proc LLVMConstSub*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSub".} -proc LLVMConstFSub*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFSub".} -proc LLVMConstMul*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstMul".} -proc LLVMConstFMul*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFMul".} -proc LLVMConstUDiv*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstUDiv".} -proc LLVMConstSDiv*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSDiv".} -proc LLVMConstExactSDiv*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstExactSDiv".} -proc LLVMConstFDiv*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFDiv".} -proc LLVMConstURem*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstURem".} -proc LLVMConstSRem*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSRem".} -proc LLVMConstFRem*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFRem".} -proc LLVMConstAnd*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstAnd".} -proc LLVMConstOr*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstOr".} -proc LLVMConstXor*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstXor".} -proc LLVMConstICmp*(Predicate: LLVMIntPredicate, LHSConstant: LLVMValueRef, - RHSConstant: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstICmp".} -proc LLVMConstFCmp*(Predicate: LLVMRealPredicate, LHSConstant: LLVMValueRef, - RHSConstant: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstFCmp".} -proc LLVMConstShl*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstShl".} -proc LLVMConstLShr*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstLShr".} -proc LLVMConstAShr*(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstAShr".} -proc LLVMConstGEP*(ConstantVal: LLVMValueRef, ConstantIndices: pLLVMValueRef, - NumIndices: dword): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstGEP".} -proc LLVMConstInBoundsGEP*(ConstantVal: LLVMValueRef, - ConstantIndices: pLLVMValueRef, NumIndices: dword): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstInBoundsGEP".} -proc LLVMConstTrunc*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstTrunc".} -proc LLVMConstSExt*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSExt".} -proc LLVMConstZExt*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstZExt".} -proc LLVMConstFPTrunc*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFPTrunc".} -proc LLVMConstFPExt*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFPExt".} -proc LLVMConstUIToFP*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstUIToFP".} -proc LLVMConstSIToFP*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSIToFP".} -proc LLVMConstFPToUI*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFPToUI".} -proc LLVMConstFPToSI*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFPToSI".} -proc LLVMConstPtrToInt*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstPtrToInt".} -proc LLVMConstIntToPtr*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstIntToPtr".} -proc LLVMConstBitCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstBitCast".} -proc LLVMConstZExtOrBitCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstZExtOrBitCast".} -proc LLVMConstSExtOrBitCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstSExtOrBitCast".} -proc LLVMConstTruncOrBitCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstTruncOrBitCast".} -proc LLVMConstPointerCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstPointerCast".} -proc LLVMConstIntCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef, - isSigned: dword): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstIntCast".} -proc LLVMConstFPCast*(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstFPCast".} -proc LLVMConstSelect*(ConstantCondition: LLVMValueRef, - ConstantIfTrue: LLVMValueRef, - ConstantIfFalse: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstSelect".} -proc LLVMConstExtractElement*(VectorConstant: LLVMValueRef, - IndexConstant: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstExtractElement".} -proc LLVMConstInsertElement*(VectorConstant: LLVMValueRef, - ElementValueConstant: LLVMValueRef, - IndexConstant: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstInsertElement".} -proc LLVMConstShuffleVector*(VectorAConstant: LLVMValueRef, - VectorBConstant: LLVMValueRef, - MaskConstant: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstShuffleVector".} -proc LLVMConstExtractValue*(AggConstant: LLVMValueRef, IdxList: pdword, - NumIdx: dword): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMConstExtractValue".} -proc LLVMConstInsertValue*(AggConstant: LLVMValueRef, - ElementValueConstant: LLVMValueRef, IdxList: pdword, - NumIdx: dword): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMConstInsertValue".} -proc LLVMConstInlineAsm*(Ty: LLVMTypeRef, AsmString: cstring, - Constraints: cstring, HasSideEffects: int32): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMConstInlineAsm".} - # Operations on global variables, functions, and aliases (globals) -proc LLVMGetGlobalParent*(Global: LLVMValueRef): LLVMModuleRef{.cdecl, - dynlib: libname, importc: "LLVMGetGlobalParent".} -proc LLVMIsDeclaration*(Global: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsDeclaration".} -proc LLVMGetLinkage*(Global: LLVMValueRef): LLVMLinkage{.cdecl, dynlib: libname, - importc: "LLVMGetLinkage".} -proc LLVMSetLinkage*(Global: LLVMValueRef, Linkage: LLVMLinkage){.cdecl, - dynlib: libname, importc: "LLVMSetLinkage".} -proc LLVMGetSection*(Global: LLVMValueRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetSection".} -proc LLVMSetSection*(Global: LLVMValueRef, Section: cstring){.cdecl, - dynlib: libname, importc: "LLVMSetSection".} -proc LLVMGetVisibility*(Global: LLVMValueRef): LLVMVisibility{.cdecl, - dynlib: libname, importc: "LLVMGetVisibility".} -proc LLVMSetVisibility*(Global: LLVMValueRef, Viz: LLVMVisibility){.cdecl, - dynlib: libname, importc: "LLVMSetVisibility".} -proc LLVMGetAlignment*(Global: LLVMValueRef): dword{.cdecl, dynlib: libname, - importc: "LLVMGetAlignment".} -proc LLVMSetAlignment*(Global: LLVMValueRef, Bytes: dword){.cdecl, - dynlib: libname, importc: "LLVMSetAlignment".} - # Operations on global variables -proc LLVMAddGlobal*(M: LLVMModuleRef, Ty: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMAddGlobal".} -proc LLVMGetNamedGlobal*(M: LLVMModuleRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetNamedGlobal".} -proc LLVMGetFirstGlobal*(M: LLVMModuleRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetFirstGlobal".} -proc LLVMGetLastGlobal*(M: LLVMModuleRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastGlobal".} -proc LLVMGetNextGlobal*(GlobalVar: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetNextGlobal".} -proc LLVMGetPreviousGlobal*(GlobalVar: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetPreviousGlobal".} -proc LLVMDeleteGlobal*(GlobalVar: LLVMValueRef){.cdecl, dynlib: libname, - importc: "LLVMDeleteGlobal".} -proc LLVMGetInitializer*(GlobalVar: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetInitializer".} -proc LLVMSetInitializer*(GlobalVar: LLVMValueRef, ConstantVal: LLVMValueRef){. - cdecl, dynlib: libname, importc: "LLVMSetInitializer".} -proc LLVMIsThreadLocal*(GlobalVar: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsThreadLocal".} -proc LLVMSetThreadLocal*(GlobalVar: LLVMValueRef, IsThreadLocal: int32){.cdecl, - dynlib: libname, importc: "LLVMSetThreadLocal".} -proc LLVMIsGlobalConstant*(GlobalVar: LLVMValueRef): int32{.cdecl, - dynlib: libname, importc: "LLVMIsGlobalConstant".} -proc LLVMSetGlobalConstant*(GlobalVar: LLVMValueRef, IsConstant: int32){.cdecl, - dynlib: libname, importc: "LLVMSetGlobalConstant".} - # Operations on aliases -proc LLVMAddAlias*(M: LLVMModuleRef, Ty: LLVMTypeRef, Aliasee: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMAddAlias".} - # Operations on functions -proc LLVMAddFunction*(M: LLVMModuleRef, Name: cstring, FunctionTy: LLVMTypeRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMAddFunction".} -proc LLVMGetNamedFunction*(M: LLVMModuleRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMGetNamedFunction".} -proc LLVMGetFirstFunction*(M: LLVMModuleRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetFirstFunction".} -proc LLVMGetLastFunction*(M: LLVMModuleRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetLastFunction".} -proc LLVMGetNextFunction*(Fn: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetNextFunction".} -proc LLVMGetPreviousFunction*(Fn: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetPreviousFunction".} -proc LLVMDeleteFunction*(Fn: LLVMValueRef){.cdecl, dynlib: libname, - importc: "LLVMDeleteFunction".} -proc LLVMGetIntrinsicID*(Fn: LLVMValueRef): dword{.cdecl, dynlib: libname, - importc: "LLVMGetIntrinsicID".} -proc LLVMGetFunctionCallConv*(Fn: LLVMValueRef): dword{.cdecl, dynlib: libname, - importc: "LLVMGetFunctionCallConv".} -proc LLVMSetFunctionCallConv*(Fn: LLVMValueRef, CC: dword){.cdecl, - dynlib: libname, importc: "LLVMSetFunctionCallConv".} -proc LLVMGetGC*(Fn: LLVMValueRef): cstring{.cdecl, dynlib: libname, - importc: "LLVMGetGC".} -proc LLVMSetGC*(Fn: LLVMValueRef, Name: cstring){.cdecl, dynlib: libname, - importc: "LLVMSetGC".} -proc LLVMAddFunctionAttr*(Fn: LLVMValueRef, PA: LLVMAttribute){.cdecl, - dynlib: libname, importc: "LLVMAddFunctionAttr".} -proc LLVMGetFunctionAttr*(Fn: LLVMValueRef): LLVMAttribute{.cdecl, - dynlib: libname, importc: "LLVMGetFunctionAttr".} -proc LLVMRemoveFunctionAttr*(Fn: LLVMValueRef, PA: LLVMAttribute){.cdecl, - dynlib: libname, importc: "LLVMRemoveFunctionAttr".} - # Operations on parameters -proc LLVMCountParams*(Fn: LLVMValueRef): dword{.cdecl, dynlib: libname, - importc: "LLVMCountParams".} -proc LLVMGetParams*(Fn: LLVMValueRef, Params: pLLVMValueRef){.cdecl, - dynlib: libname, importc: "LLVMGetParams".} -proc LLVMGetParam*(Fn: LLVMValueRef, Index: dword): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetParam".} -proc LLVMGetParamParent*(Inst: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetParamParent".} -proc LLVMGetFirstParam*(Fn: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetFirstParam".} -proc LLVMGetLastParam*(Fn: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetLastParam".} -proc LLVMGetNextParam*(Arg: LLVMValueRef): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMGetNextParam".} -proc LLVMGetPreviousParam*(Arg: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetPreviousParam".} -proc LLVMAddAttribute*(Arg: LLVMValueRef, PA: LLVMAttribute){.cdecl, - dynlib: libname, importc: "LLVMAddAttribute".} -proc LLVMRemoveAttribute*(Arg: LLVMValueRef, PA: LLVMAttribute){.cdecl, - dynlib: libname, importc: "LLVMRemoveAttribute".} -proc LLVMGetAttribute*(Arg: LLVMValueRef): LLVMAttribute{.cdecl, - dynlib: libname, importc: "LLVMGetAttribute".} -proc LLVMSetParamAlignment*(Arg: LLVMValueRef, align: dword){.cdecl, - dynlib: libname, importc: "LLVMSetParamAlignment".} - # Operations on basic blocks -proc LLVMBasicBlockAsValue*(BB: LLVMBasicBlockRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBasicBlockAsValue".} -proc LLVMValueIsBasicBlock*(Val: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMValueIsBasicBlock".} -proc LLVMValueAsBasicBlock*(Val: LLVMValueRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMValueAsBasicBlock".} -proc LLVMGetBasicBlockParent*(BB: LLVMBasicBlockRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetBasicBlockParent".} -proc LLVMCountBasicBlocks*(Fn: LLVMValueRef): dword{.cdecl, dynlib: libname, - importc: "LLVMCountBasicBlocks".} -proc LLVMGetBasicBlocks*(Fn: LLVMValueRef, BasicBlocks: pLLVMBasicBlockRef){. - cdecl, dynlib: libname, importc: "LLVMGetBasicBlocks".} -proc LLVMGetFirstBasicBlock*(Fn: LLVMValueRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetFirstBasicBlock".} -proc LLVMGetLastBasicBlock*(Fn: LLVMValueRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetLastBasicBlock".} -proc LLVMGetNextBasicBlock*(BB: LLVMBasicBlockRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetNextBasicBlock".} -proc LLVMGetPreviousBasicBlock*(BB: LLVMBasicBlockRef): LLVMBasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMGetPreviousBasicBlock".} -proc LLVMGetEntryBasicBlock*(Fn: LLVMValueRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetEntryBasicBlock".} -proc LLVMAppendBasicBlockInContext*(C: LLVMContextRef, Fn: LLVMValueRef, - Name: cstring): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMAppendBasicBlockInContext".} -proc LLVMInsertBasicBlockInContext*(C: LLVMContextRef, BB: LLVMBasicBlockRef, - Name: cstring): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMInsertBasicBlockInContext".} -proc LLVMAppendBasicBlock*(Fn: LLVMValueRef, Name: cstring): LLVMBasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMAppendBasicBlock".} -proc LLVMInsertBasicBlock*(InsertBeforeBB: LLVMBasicBlockRef, Name: cstring): LLVMBasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMInsertBasicBlock".} -proc LLVMDeleteBasicBlock*(BB: LLVMBasicBlockRef){.cdecl, dynlib: libname, - importc: "LLVMDeleteBasicBlock".} - # Operations on instructions -proc LLVMGetInstructionParent*(Inst: LLVMValueRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetInstructionParent".} -proc LLVMGetFirstInstruction*(BB: LLVMBasicBlockRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetFirstInstruction".} -proc LLVMGetLastInstruction*(BB: LLVMBasicBlockRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetLastInstruction".} -proc LLVMGetNextInstruction*(Inst: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetNextInstruction".} -proc LLVMGetPreviousInstruction*(Inst: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMGetPreviousInstruction".} - # Operations on call sites -proc LLVMSetInstructionCallConv*(Instr: LLVMValueRef, CC: dword){.cdecl, - dynlib: libname, importc: "LLVMSetInstructionCallConv".} -proc LLVMGetInstructionCallConv*(Instr: LLVMValueRef): dword{.cdecl, - dynlib: libname, importc: "LLVMGetInstructionCallConv".} -proc LLVMAddInstrAttribute*(Instr: LLVMValueRef, index: dword, - para3: LLVMAttribute){.cdecl, dynlib: libname, - importc: "LLVMAddInstrAttribute".} -proc LLVMRemoveInstrAttribute*(Instr: LLVMValueRef, index: dword, - para3: LLVMAttribute){.cdecl, dynlib: libname, - importc: "LLVMRemoveInstrAttribute".} -proc LLVMSetInstrParamAlignment*(Instr: LLVMValueRef, index: dword, align: dword){. - cdecl, dynlib: libname, importc: "LLVMSetInstrParamAlignment".} - # Operations on call instructions (only) -proc LLVMIsTailCall*(CallInst: LLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMIsTailCall".} -proc LLVMSetTailCall*(CallInst: LLVMValueRef, IsTailCall: int32){.cdecl, - dynlib: libname, importc: "LLVMSetTailCall".} - # Operations on phi nodes -proc LLVMAddIncoming*(PhiNode: LLVMValueRef, IncomingValues: pLLVMValueRef, - IncomingBlocks: pLLVMBasicBlockRef, Count: dword){.cdecl, - dynlib: libname, importc: "LLVMAddIncoming".} -proc LLVMCountIncoming*(PhiNode: LLVMValueRef): dword{.cdecl, dynlib: libname, - importc: "LLVMCountIncoming".} -proc LLVMGetIncomingValue*(PhiNode: LLVMValueRef, Index: dword): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMGetIncomingValue".} -proc LLVMGetIncomingBlock*(PhiNode: LLVMValueRef, Index: dword): LLVMBasicBlockRef{. - cdecl, dynlib: libname, importc: "LLVMGetIncomingBlock".} - #===-- Instruction builders ----------------------------------------------=== - # An instruction builder represents a point within a basic block, and is the - # * exclusive means of building instructions using the C interface. - # -proc LLVMCreateBuilderInContext*(C: LLVMContextRef): LLVMBuilderRef{.cdecl, - dynlib: libname, importc: "LLVMCreateBuilderInContext".} -proc LLVMCreateBuilder*(): LLVMBuilderRef{.cdecl, dynlib: libname, - importc: "LLVMCreateBuilder".} -proc LLVMPositionBuilder*(Builder: LLVMBuilderRef, theBlock: LLVMBasicBlockRef, - Instr: LLVMValueRef){.cdecl, dynlib: libname, - importc: "LLVMPositionBuilder".} -proc LLVMPositionBuilderBefore*(Builder: LLVMBuilderRef, Instr: LLVMValueRef){. - cdecl, dynlib: libname, importc: "LLVMPositionBuilderBefore".} -proc LLVMPositionBuilderAtEnd*(Builder: LLVMBuilderRef, theBlock: LLVMBasicBlockRef){. - cdecl, dynlib: libname, importc: "LLVMPositionBuilderAtEnd".} -proc LLVMGetInsertBlock*(Builder: LLVMBuilderRef): LLVMBasicBlockRef{.cdecl, - dynlib: libname, importc: "LLVMGetInsertBlock".} -proc LLVMClearInsertionPosition*(Builder: LLVMBuilderRef){.cdecl, - dynlib: libname, importc: "LLVMClearInsertionPosition".} -proc LLVMInsertIntoBuilder*(Builder: LLVMBuilderRef, Instr: LLVMValueRef){. - cdecl, dynlib: libname, importc: "LLVMInsertIntoBuilder".} -proc LLVMInsertIntoBuilderWithName*(Builder: LLVMBuilderRef, - Instr: LLVMValueRef, Name: cstring){.cdecl, - dynlib: libname, importc: "LLVMInsertIntoBuilderWithName".} -proc LLVMDisposeBuilder*(Builder: LLVMBuilderRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeBuilder".} - # Terminators -proc LLVMBuildRetVoid*(para1: LLVMBuilderRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildRetVoid".} -proc LLVMBuildRet*(para1: LLVMBuilderRef, V: LLVMValueRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildRet".} -proc LLVMBuildAggregateRet*(para1: LLVMBuilderRef, RetVals: pLLVMValueRef, - N: dword): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildAggregateRet".} -proc LLVMBuildBr*(para1: LLVMBuilderRef, Dest: LLVMBasicBlockRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildBr".} -proc LLVMBuildCondBr*(para1: LLVMBuilderRef, Cond: LLVMValueRef, - ThenBranch: LLVMBasicBlockRef, - ElseBranch: LLVMBasicBlockRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildCondBr".} -proc LLVMBuildSwitch*(para1: LLVMBuilderRef, V: LLVMValueRef, - ElseBranch: LLVMBasicBlockRef, NumCases: dword): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildSwitch".} -proc LLVMBuildInvoke*(para1: LLVMBuilderRef, Fn: LLVMValueRef, - Args: pLLVMValueRef, NumArgs: dword, - ThenBranch: LLVMBasicBlockRef, Catch: LLVMBasicBlockRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildInvoke".} -proc LLVMBuildUnwind*(para1: LLVMBuilderRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildUnwind".} -proc LLVMBuildUnreachable*(para1: LLVMBuilderRef): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildUnreachable".} - # Add a case to the switch instruction -proc LLVMAddCase*(Switch: LLVMValueRef, OnVal: LLVMValueRef, - Dest: LLVMBasicBlockRef){.cdecl, dynlib: libname, - importc: "LLVMAddCase".} - # Arithmetic -proc LLVMBuildAdd*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildAdd".} -proc LLVMBuildNSWAdd*(para1: LLVMBuilderRef, LHS: LLVMValueRef, - RHS: LLVMValueRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildNSWAdd".} -proc LLVMBuildFAdd*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFAdd".} -proc LLVMBuildSub*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSub".} -proc LLVMBuildFSub*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFSub".} -proc LLVMBuildMul*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildMul".} -proc LLVMBuildFMul*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFMul".} -proc LLVMBuildUDiv*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildUDiv".} -proc LLVMBuildSDiv*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSDiv".} -proc LLVMBuildExactSDiv*(para1: LLVMBuilderRef, LHS: LLVMValueRef, - RHS: LLVMValueRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildExactSDiv".} -proc LLVMBuildFDiv*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFDiv".} -proc LLVMBuildURem*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildURem".} -proc LLVMBuildSRem*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSRem".} -proc LLVMBuildFRem*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildFRem".} -proc LLVMBuildShl*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildShl".} -proc LLVMBuildLShr*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildLShr".} -proc LLVMBuildAShr*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildAShr".} -proc LLVMBuildAnd*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildAnd".} -proc LLVMBuildOr*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildOr".} -proc LLVMBuildXor*(para1: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildXor".} -proc LLVMBuildNeg*(para1: LLVMBuilderRef, V: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildNeg".} -proc LLVMBuildFNeg*(para1: LLVMBuilderRef, V: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFNeg".} -proc LLVMBuildNot*(para1: LLVMBuilderRef, V: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildNot".} - # Memory -proc LLVMBuildMalloc*(para1: LLVMBuilderRef, Ty: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildMalloc".} -proc LLVMBuildArrayMalloc*(para1: LLVMBuilderRef, Ty: LLVMTypeRef, - Val: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildArrayMalloc".} -proc LLVMBuildAlloca*(para1: LLVMBuilderRef, Ty: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildAlloca".} -proc LLVMBuildArrayAlloca*(para1: LLVMBuilderRef, Ty: LLVMTypeRef, - Val: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildArrayAlloca".} -proc LLVMBuildFree*(para1: LLVMBuilderRef, PointerVal: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFree".} -proc LLVMBuildLoad*(para1: LLVMBuilderRef, PointerVal: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildLoad".} -proc LLVMBuildStore*(para1: LLVMBuilderRef, Val: LLVMValueRef, - thePtr: LLVMValueRef): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildStore".} -proc LLVMBuildGEP*(B: LLVMBuilderRef, Pointer: LLVMValueRef, - Indices: pLLVMValueRef, NumIndices: dword, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildGEP".} -proc LLVMBuildInBoundsGEP*(B: LLVMBuilderRef, Pointer: LLVMValueRef, - Indices: pLLVMValueRef, NumIndices: dword, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildInBoundsGEP".} -proc LLVMBuildStructGEP*(B: LLVMBuilderRef, Pointer: LLVMValueRef, Idx: dword, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildStructGEP".} -proc LLVMBuildGlobalString*(B: LLVMBuilderRef, Str: cstring, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildGlobalString".} -proc LLVMBuildGlobalStringPtr*(B: LLVMBuilderRef, Str: cstring, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildGlobalStringPtr".} - # Casts -proc LLVMBuildTrunc*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildTrunc".} -proc LLVMBuildZExt*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildZExt".} -proc LLVMBuildSExt*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildSExt".} -proc LLVMBuildFPToUI*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFPToUI".} -proc LLVMBuildFPToSI*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFPToSI".} -proc LLVMBuildUIToFP*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildUIToFP".} -proc LLVMBuildSIToFP*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildSIToFP".} -proc LLVMBuildFPTrunc*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFPTrunc".} -proc LLVMBuildFPExt*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFPExt".} -proc LLVMBuildPtrToInt*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildPtrToInt".} -proc LLVMBuildIntToPtr*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildIntToPtr".} -proc LLVMBuildBitCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildBitCast".} -proc LLVMBuildZExtOrBitCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildZExtOrBitCast".} -proc LLVMBuildSExtOrBitCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildSExtOrBitCast".} -proc LLVMBuildTruncOrBitCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildTruncOrBitCast".} -proc LLVMBuildPointerCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildPointerCast".} -proc LLVMBuildIntCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildIntCast".} -proc LLVMBuildFPCast*(para1: LLVMBuilderRef, Val: LLVMValueRef, - DestTy: LLVMTypeRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildFPCast".} - # Comparisons -proc LLVMBuildICmp*(para1: LLVMBuilderRef, Op: LLVMIntPredicate, - LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildICmp".} -proc LLVMBuildFCmp*(para1: LLVMBuilderRef, Op: LLVMRealPredicate, - LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildFCmp".} - # Miscellaneous instructions -proc LLVMBuildPhi*(para1: LLVMBuilderRef, Ty: LLVMTypeRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildPhi".} -proc LLVMBuildCall*(para1: LLVMBuilderRef, Fn: LLVMValueRef, - Args: pLLVMValueRef, NumArgs: dword, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildCall".} -proc LLVMBuildSelect*(para1: LLVMBuilderRef, Cond: LLVMValueRef, - ThenBranch: LLVMValueRef, ElseBranch: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildSelect".} -proc LLVMBuildVAArg*(para1: LLVMBuilderRef, List: LLVMValueRef, Ty: LLVMTypeRef, - Name: cstring): LLVMValueRef{.cdecl, dynlib: libname, - importc: "LLVMBuildVAArg".} -proc LLVMBuildExtractElement*(para1: LLVMBuilderRef, VecVal: LLVMValueRef, - Index: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildExtractElement".} -proc LLVMBuildInsertElement*(para1: LLVMBuilderRef, VecVal: LLVMValueRef, - EltVal: LLVMValueRef, Index: LLVMValueRef, - Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildInsertElement".} -proc LLVMBuildShuffleVector*(para1: LLVMBuilderRef, V1: LLVMValueRef, - V2: LLVMValueRef, Mask: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildShuffleVector".} -proc LLVMBuildExtractValue*(para1: LLVMBuilderRef, AggVal: LLVMValueRef, - Index: dword, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildExtractValue".} -proc LLVMBuildInsertValue*(para1: LLVMBuilderRef, AggVal: LLVMValueRef, - EltVal: LLVMValueRef, Index: dword, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildInsertValue".} -proc LLVMBuildIsNull*(para1: LLVMBuilderRef, Val: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildIsNull".} -proc LLVMBuildIsNotNull*(para1: LLVMBuilderRef, Val: LLVMValueRef, Name: cstring): LLVMValueRef{. - cdecl, dynlib: libname, importc: "LLVMBuildIsNotNull".} -proc LLVMBuildPtrDiff*(para1: LLVMBuilderRef, LHS: LLVMValueRef, - RHS: LLVMValueRef, Name: cstring): LLVMValueRef{.cdecl, - dynlib: libname, importc: "LLVMBuildPtrDiff".} - #===-- Module providers --------------------------------------------------=== - # Encapsulates the module M in a module provider, taking ownership of the - # * module. - # * See the constructor llvm::ExistingModuleProvider::ExistingModuleProvider. - # -proc LLVMCreateModuleProviderForExistingModule*(M: LLVMModuleRef): LLVMModuleProviderRef{. - cdecl, dynlib: libname, importc: "LLVMCreateModuleProviderForExistingModule".} - # Destroys the module provider MP as well as the contained module. - # * See the destructor llvm::ModuleProvider::~ModuleProvider. - # -proc LLVMDisposeModuleProvider*(MP: LLVMModuleProviderRef){.cdecl, - dynlib: libname, importc: "LLVMDisposeModuleProvider".} - #===-- Memory buffers ----------------------------------------------------=== -proc LLVMCreateMemoryBufferWithContentsOfFile*(Path: cstring, - OutMemBuf: pLLVMMemoryBufferRef, OutMessage: Ppchar): int32{.cdecl, - dynlib: libname, importc: "LLVMCreateMemoryBufferWithContentsOfFile".} -proc LLVMCreateMemoryBufferWithSTDIN*(OutMemBuf: pLLVMMemoryBufferRef, - OutMessage: Ppchar): int32{.cdecl, - dynlib: libname, importc: "LLVMCreateMemoryBufferWithSTDIN".} -proc LLVMDisposeMemoryBuffer*(MemBuf: LLVMMemoryBufferRef){.cdecl, - dynlib: libname, importc: "LLVMDisposeMemoryBuffer".} - #===-- Pass Managers -----------------------------------------------------=== - #* Constructs a new whole-module pass pipeline. This type of pipeline is - # suitable for link-time optimization and whole-module transformations. - # See llvm::PassManager::PassManager. -proc LLVMCreatePassManager*(): LLVMPassManagerRef{.cdecl, dynlib: libname, - importc: "LLVMCreatePassManager".} - #* Constructs a new function-by-function pass pipeline over the module - # provider. It does not take ownership of the module provider. This type of - # pipeline is suitable for code generation and JIT compilation tasks. - # See llvm::FunctionPassManager::FunctionPassManager. -proc LLVMCreateFunctionPassManager*(MP: LLVMModuleProviderRef): LLVMPassManagerRef{. - cdecl, dynlib: libname, importc: "LLVMCreateFunctionPassManager".} - #* Initializes, executes on the provided module, and finalizes all of the - # passes scheduled in the pass manager. Returns 1 if any of the passes - # modified the module, 0 otherwise. See llvm::PassManager::run(Module&). -proc LLVMRunPassManager*(PM: LLVMPassManagerRef, M: LLVMModuleRef): int32{. - cdecl, dynlib: libname, importc: "LLVMRunPassManager".} - #* Initializes all of the function passes scheduled in the function pass - # manager. Returns 1 if any of the passes modified the module, 0 otherwise. - # See llvm::FunctionPassManager::doInitialization. -proc LLVMInitializeFunctionPassManager*(FPM: LLVMPassManagerRef): int32{.cdecl, - dynlib: libname, importc: "LLVMInitializeFunctionPassManager".} - #* Executes all of the function passes scheduled in the function pass manager - # on the provided function. Returns 1 if any of the passes modified the - # function, false otherwise. - # See llvm::FunctionPassManager::run(Function&). -proc LLVMRunFunctionPassManager*(FPM: LLVMPassManagerRef, F: LLVMValueRef): int32{. - cdecl, dynlib: libname, importc: "LLVMRunFunctionPassManager".} - #* Finalizes all of the function passes scheduled in in the function pass - # manager. Returns 1 if any of the passes modified the module, 0 otherwise. - # See llvm::FunctionPassManager::doFinalization. -proc LLVMFinalizeFunctionPassManager*(FPM: LLVMPassManagerRef): int32{.cdecl, - dynlib: libname, importc: "LLVMFinalizeFunctionPassManager".} - #* Frees the memory of a pass pipeline. For function pipelines, does not free - # the module provider. - # See llvm::PassManagerBase::~PassManagerBase. -proc LLVMDisposePassManager*(PM: LLVMPassManagerRef){.cdecl, dynlib: libname, - importc: "LLVMDisposePassManager".} - # Analysis.h - # verifier will print to stderr and abort() - # verifier will print to stderr and return 1 - # verifier will just return 1 -type - LLVMVerifierFailureAction* = enum # Verifies that a module is valid, taking the specified action if not. - # Optionally returns a human-readable description of any invalid constructs. - # OutMessage must be disposed with LLVMDisposeMessage. - LLVMAbortProcessAction, LLVMPrintMessageAction, LLVMReturnStatusAction - -proc LLVMVerifyModule*(M: LLVMModuleRef, Action: LLVMVerifierFailureAction, - OutMessage: Ppchar): int32{.cdecl, dynlib: libname, - importc: "LLVMVerifyModule".} - # Verifies that a single function is valid, taking the specified action. Useful - # for debugging. -proc LLVMVerifyFunction*(Fn: LLVMValueRef, Action: LLVMVerifierFailureAction): int32{. - cdecl, dynlib: libname, importc: "LLVMVerifyFunction".} - # Open up a ghostview window that displays the CFG of the current function. - # Useful for debugging. -proc LLVMViewFunctionCFG*(Fn: LLVMValueRef){.cdecl, dynlib: libname, - importc: "LLVMViewFunctionCFG".} -proc LLVMViewFunctionCFGOnly*(Fn: LLVMValueRef){.cdecl, dynlib: libname, - importc: "LLVMViewFunctionCFGOnly".} - # BitReader.h - # Builds a module from the bitcode in the specified memory buffer, returning a - # reference to the module via the OutModule parameter. Returns 0 on success. - # Optionally returns a human-readable error message via OutMessage. -proc LLVMParseBitcode*(MemBuf: LLVMMemoryBufferRef, OutModule: pLLVMModuleRef, - OutMessage: Ppchar): int32{.cdecl, dynlib: libname, - importc: "LLVMParseBitcode".} -proc LLVMParseBitcodeInContext*(ContextRef: LLVMContextRef, - MemBuf: LLVMMemoryBufferRef, - OutModule: pLLVMModuleRef, OutMessage: Ppchar): int32{. - cdecl, dynlib: libname, importc: "LLVMParseBitcodeInContext".} - # Reads a module from the specified path, returning via the OutMP parameter - # a module provider which performs lazy deserialization. Returns 0 on success. - # Optionally returns a human-readable error message via OutMessage. -proc LLVMGetBitcodeModuleProvider*(MemBuf: LLVMMemoryBufferRef, - OutMP: pLLVMModuleProviderRef, - OutMessage: Ppchar): int32{.cdecl, - dynlib: libname, importc: "LLVMGetBitcodeModuleProvider".} -proc LLVMGetBitcodeModuleProviderInContext*(ContextRef: LLVMContextRef, - MemBuf: LLVMMemoryBufferRef, OutMP: pLLVMModuleProviderRef, - OutMessage: Ppchar): int32{.cdecl, dynlib: libname, importc: "LLVMGetBitcodeModuleProviderInContext".} - # BitWriter.h - #===-- Operations on modules ---------------------------------------------=== - # Writes a module to an open file descriptor. Returns 0 on success. - # Closes the Handle. Use dup first if this is not what you want. -proc LLVMWriteBitcodeToFileHandle*(M: LLVMModuleRef, Handle: int32): int32{. - cdecl, dynlib: libname, importc: "LLVMWriteBitcodeToFileHandle".} - # Writes a module to the specified path. Returns 0 on success. -proc LLVMWriteBitcodeToFile*(M: LLVMModuleRef, Path: cstring): int32{.cdecl, - dynlib: libname, importc: "LLVMWriteBitcodeToFile".} - # Target.h -const - LLVMBigEndian* = 0 - LLVMLittleEndian* = 1 - -type - LLVMByteOrdering* = int32 - LLVMTargetDataRef* = LLVMOpaqueTargetData - LLVMStructLayoutRef* = LLVMStructLayout #===-- Target Data -------------------------------------------------------=== - #* Creates target data from a target layout string. - # See the constructor llvm::TargetData::TargetData. - -proc LLVMCreateTargetData*(StringRep: cstring): LLVMTargetDataRef{.cdecl, - dynlib: libname, importc: "LLVMCreateTargetData".} - #* Adds target data information to a pass manager. This does not take ownership - # of the target data. - # See the method llvm::PassManagerBase::add. -proc LLVMAddTargetData*(para1: LLVMTargetDataRef, para2: LLVMPassManagerRef){. - cdecl, dynlib: libname, importc: "LLVMAddTargetData".} - #* Converts target data to a target layout string. The string must be disposed - # with LLVMDisposeMessage. - # See the constructor llvm::TargetData::TargetData. -proc LLVMCopyStringRepOfTargetData*(para1: LLVMTargetDataRef): cstring{.cdecl, - dynlib: libname, importc: "LLVMCopyStringRepOfTargetData".} - #* Returns the byte order of a target, either LLVMBigEndian or - # LLVMLittleEndian. - # See the method llvm::TargetData::isLittleEndian. -proc LLVMByteOrder*(para1: LLVMTargetDataRef): LLVMByteOrdering{.cdecl, - dynlib: libname, importc: "LLVMByteOrder".} - #* Returns the pointer size in bytes for a target. - # See the method llvm::TargetData::getPointerSize. -proc LLVMPointerSize*(para1: LLVMTargetDataRef): dword{.cdecl, dynlib: libname, - importc: "LLVMPointerSize".} - #* Returns the integer type that is the same size as a pointer on a target. - # See the method llvm::TargetData::getIntPtrType. -proc LLVMIntPtrType*(para1: LLVMTargetDataRef): LLVMTypeRef{.cdecl, - dynlib: libname, importc: "LLVMIntPtrType".} - #* Computes the size of a type in bytes for a target. - # See the method llvm::TargetData::getTypeSizeInBits. -proc LLVMSizeOfTypeInBits*(para1: LLVMTargetDataRef, para2: LLVMTypeRef): qword{. - cdecl, dynlib: libname, importc: "LLVMSizeOfTypeInBits".} - #* Computes the storage size of a type in bytes for a target. - # See the method llvm::TargetData::getTypeStoreSize. -proc LLVMStoreSizeOfType*(para1: LLVMTargetDataRef, para2: LLVMTypeRef): qword{. - cdecl, dynlib: libname, importc: "LLVMStoreSizeOfType".} - #* Computes the ABI size of a type in bytes for a target. - # See the method llvm::TargetData::getTypeAllocSize. -proc LLVMABISizeOfType*(para1: LLVMTargetDataRef, para2: LLVMTypeRef): qword{. - cdecl, dynlib: libname, importc: "LLVMABISizeOfType".} - #* Computes the ABI alignment of a type in bytes for a target. - # See the method llvm::TargetData::getTypeABISize. -proc LLVMABIAlignmentOfType*(para1: LLVMTargetDataRef, para2: LLVMTypeRef): dword{. - cdecl, dynlib: libname, importc: "LLVMABIAlignmentOfType".} - #* Computes the call frame alignment of a type in bytes for a target. - # See the method llvm::TargetData::getTypeABISize. -proc LLVMCallFrameAlignmentOfType*(para1: LLVMTargetDataRef, para2: LLVMTypeRef): dword{. - cdecl, dynlib: libname, importc: "LLVMCallFrameAlignmentOfType".} - #* Computes the preferred alignment of a type in bytes for a target. - # See the method llvm::TargetData::getTypeABISize. -proc LLVMPreferredAlignmentOfType*(para1: LLVMTargetDataRef, para2: LLVMTypeRef): dword{. - cdecl, dynlib: libname, importc: "LLVMPreferredAlignmentOfType".} - #* Computes the preferred alignment of a global variable in bytes for a target. - # See the method llvm::TargetData::getPreferredAlignment. -proc LLVMPreferredAlignmentOfGlobal*(para1: LLVMTargetDataRef, - GlobalVar: LLVMValueRef): dword{.cdecl, - dynlib: libname, importc: "LLVMPreferredAlignmentOfGlobal".} - #* Computes the structure element that contains the byte offset for a target. - # See the method llvm::StructLayout::getElementContainingOffset. -proc LLVMElementAtOffset*(para1: LLVMTargetDataRef, StructTy: LLVMTypeRef, - Offset: qword): dword{.cdecl, dynlib: libname, - importc: "LLVMElementAtOffset".} - #* Computes the byte offset of the indexed struct element for a target. - # See the method llvm::StructLayout::getElementContainingOffset. -proc LLVMOffsetOfElement*(para1: LLVMTargetDataRef, StructTy: LLVMTypeRef, - Element: dword): qword{.cdecl, dynlib: libname, - importc: "LLVMOffsetOfElement".} - #* Struct layouts are speculatively cached. If a TargetDataRef is alive when - # types are being refined and removed, this method must be called whenever a - # struct type is removed to avoid a dangling pointer in this cache. - # See the method llvm::TargetData::InvalidateStructLayoutInfo. -proc LLVMInvalidateStructLayout*(para1: LLVMTargetDataRef, StructTy: LLVMTypeRef){. - cdecl, dynlib: libname, importc: "LLVMInvalidateStructLayout".} - #* Deallocates a TargetData. - # See the destructor llvm::TargetData::~TargetData. -proc LLVMDisposeTargetData*(para1: LLVMTargetDataRef){.cdecl, dynlib: libname, - importc: "LLVMDisposeTargetData".} - # ExecutionEngine.h -proc LLVMLinkInJIT*(){.cdecl, dynlib: libname, importc: "LLVMLinkInJIT".} -proc LLVMLinkInInterpreter*(){.cdecl, dynlib: libname, - importc: "LLVMLinkInInterpreter".} -type - LLVMGenericValueRef* = LLVMOpaqueGenericValue - LLVMExecutionEngineRef* = LLVMOpaqueExecutionEngine #===-- Operations on generic values --------------------------------------=== - -proc LLVMCreateGenericValueOfInt*(Ty: LLVMTypeRef, N: qword, IsSigned: int32): LLVMGenericValueRef{. - cdecl, dynlib: libname, importc: "LLVMCreateGenericValueOfInt".} -proc LLVMCreateGenericValueOfPointer*(P: pointer): LLVMGenericValueRef{.cdecl, - dynlib: libname, importc: "LLVMCreateGenericValueOfPointer".} -proc LLVMCreateGenericValueOfFloat*(Ty: LLVMTypeRef, N: float64): LLVMGenericValueRef{. - cdecl, dynlib: libname, importc: "LLVMCreateGenericValueOfFloat".} -proc LLVMGenericValueIntWidth*(GenValRef: LLVMGenericValueRef): dword{.cdecl, - dynlib: libname, importc: "LLVMGenericValueIntWidth".} -proc LLVMGenericValueToInt*(GenVal: LLVMGenericValueRef, IsSigned: int32): qword{. - cdecl, dynlib: libname, importc: "LLVMGenericValueToInt".} -proc LLVMGenericValueToPointer*(GenVal: LLVMGenericValueRef): pointer{.cdecl, - dynlib: libname, importc: "LLVMGenericValueToPointer".} -proc LLVMGenericValueToFloat*(TyRef: LLVMTypeRef, GenVal: LLVMGenericValueRef): float64{. - cdecl, dynlib: libname, importc: "LLVMGenericValueToFloat".} -proc LLVMDisposeGenericValue*(GenVal: LLVMGenericValueRef){.cdecl, - dynlib: libname, importc: "LLVMDisposeGenericValue".} - #===-- Operations on execution engines -----------------------------------=== -proc LLVMCreateExecutionEngine*(OutEE: pLLVMExecutionEngineRef, - MP: LLVMModuleProviderRef, OutError: Ppchar): int32{. - cdecl, dynlib: libname, importc: "LLVMCreateExecutionEngine".} -proc LLVMCreateInterpreter*(OutInterp: pLLVMExecutionEngineRef, - MP: LLVMModuleProviderRef, OutError: Ppchar): int32{. - cdecl, dynlib: libname, importc: "LLVMCreateInterpreter".} -proc LLVMCreateJITCompiler*(OutJIT: pLLVMExecutionEngineRef, - MP: LLVMModuleProviderRef, OptLevel: dword, - OutError: Ppchar): int32{.cdecl, dynlib: libname, - importc: "LLVMCreateJITCompiler".} -proc LLVMDisposeExecutionEngine*(EE: LLVMExecutionEngineRef){.cdecl, - dynlib: libname, importc: "LLVMDisposeExecutionEngine".} -proc LLVMRunStaticConstructors*(EE: LLVMExecutionEngineRef){.cdecl, - dynlib: libname, importc: "LLVMRunStaticConstructors".} -proc LLVMRunStaticDestructors*(EE: LLVMExecutionEngineRef){.cdecl, - dynlib: libname, importc: "LLVMRunStaticDestructors".} - # Const before declarator ignored - # Const before declarator ignored -proc LLVMRunFunctionAsMain*(EE: LLVMExecutionEngineRef, F: LLVMValueRef, - ArgC: dword, ArgV: Ppchar, EnvP: Ppchar): int32{. - cdecl, dynlib: libname, importc: "LLVMRunFunctionAsMain".} -proc LLVMRunFunction*(EE: LLVMExecutionEngineRef, F: LLVMValueRef, - NumArgs: dword, Args: pLLVMGenericValueRef): LLVMGenericValueRef{. - cdecl, dynlib: libname, importc: "LLVMRunFunction".} -proc LLVMFreeMachineCodeForFunction*(EE: LLVMExecutionEngineRef, F: LLVMValueRef){. - cdecl, dynlib: libname, importc: "LLVMFreeMachineCodeForFunction".} -proc LLVMAddModuleProvider*(EE: LLVMExecutionEngineRef, - MP: LLVMModuleProviderRef){.cdecl, dynlib: libname, - importc: "LLVMAddModuleProvider".} -proc LLVMRemoveModuleProvider*(EE: LLVMExecutionEngineRef, - MP: LLVMModuleProviderRef, - OutMod: pLLVMModuleRef, OutError: Ppchar): int32{. - cdecl, dynlib: libname, importc: "LLVMRemoveModuleProvider".} -proc LLVMFindFunction*(EE: LLVMExecutionEngineRef, Name: cstring, - OutFn: pLLVMValueRef): int32{.cdecl, dynlib: libname, - importc: "LLVMFindFunction".} -proc LLVMGetExecutionEngineTargetData*(EE: LLVMExecutionEngineRef): LLVMTargetDataRef{. - cdecl, dynlib: libname, importc: "LLVMGetExecutionEngineTargetData".} -proc LLVMAddGlobalMapping*(EE: LLVMExecutionEngineRef, Global: LLVMValueRef, - theAddr: pointer){.cdecl, dynlib: libname, - importc: "LLVMAddGlobalMapping".} -proc LLVMGetPointerToGlobal*(EE: LLVMExecutionEngineRef, Global: LLVMValueRef): pointer{. - cdecl, dynlib: libname, importc: "LLVMGetPointerToGlobal".} - # LinkTimeOptimizer.h - #/ This provides a dummy type for pointers to the LTO object. -type - llvm_lto_t* = pointer #/ This provides a C-visible enumerator to manage status codes. - #/ This should map exactly onto the C++ enumerator LTOStatus. - # Added C-specific error codes - llvm_lto_status* = enum - LLVM_LTO_UNKNOWN, LLVM_LTO_OPT_SUCCESS, LLVM_LTO_READ_SUCCESS, - LLVM_LTO_READ_FAILURE, LLVM_LTO_WRITE_FAILURE, LLVM_LTO_NO_TARGET, - LLVM_LTO_NO_WORK, LLVM_LTO_MODULE_MERGE_FAILURE, LLVM_LTO_ASM_FAILURE, - LLVM_LTO_NULL_OBJECT - llvm_lto_status_t* = llvm_lto_status #/ This provides C interface to initialize link time optimizer. This allows - #/ linker to use dlopen() interface to dynamically load LinkTimeOptimizer. - #/ extern "C" helps, because dlopen() interface uses name to find the symbol. - -proc llvm_create_optimizer*(): llvm_lto_t{.cdecl, dynlib: libname, - importc: "llvm_create_optimizer".} -proc llvm_destroy_optimizer*(lto: llvm_lto_t){.cdecl, dynlib: libname, - importc: "llvm_destroy_optimizer".} -proc llvm_read_object_file*(lto: llvm_lto_t, input_filename: cstring): llvm_lto_status_t{. - cdecl, dynlib: libname, importc: "llvm_read_object_file".} -proc llvm_optimize_modules*(lto: llvm_lto_t, output_filename: cstring): llvm_lto_status_t{. - cdecl, dynlib: libname, importc: "llvm_optimize_modules".} - # lto.h -const - LTO_API_VERSION* = 3 # log2 of alignment - -type - lto_symbol_attributes* = enum - LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, - LTO_SYMBOL_PERMISSIONS_MASK = 0x000000E0, - LTO_SYMBOL_PERMISSIONS_CODE = 0x000000A0, - LTO_SYMBOL_PERMISSIONS_DATA = 0x000000C0, - LTO_SYMBOL_PERMISSIONS_RODATA = 0x00000080, - LTO_SYMBOL_DEFINITION_MASK = 0x00000700, - LTO_SYMBOL_DEFINITION_REGULAR = 0x00000100, - LTO_SYMBOL_DEFINITION_TENTATIVE = 0x00000200, - LTO_SYMBOL_DEFINITION_WEAK = 0x00000300, - LTO_SYMBOL_DEFINITION_UNDEFINED = 0x00000400, - LTO_SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500, - LTO_SYMBOL_SCOPE_MASK = 0x00003800, LTO_SYMBOL_SCOPE_INTERNAL = 0x00000800, - LTO_SYMBOL_SCOPE_HIDDEN = 0x00001000, - LTO_SYMBOL_SCOPE_PROTECTED = 0x00002000, - LTO_SYMBOL_SCOPE_DEFAULT = 0x00001800 - lto_debug_model* = enum - LTO_DEBUG_MODEL_NONE = 0, LTO_DEBUG_MODEL_DWARF = 1 - lto_codegen_model* = enum #* opaque reference to a loaded object module - LTO_CODEGEN_PIC_MODEL_STATIC = 0, LTO_CODEGEN_PIC_MODEL_DYNAMIC = 1, - LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2 - lto_module_t* = LTOModule #* opaque reference to a code generator - lto_code_gen_t* = LTOCodeGenerator #* - # * Returns a printable string. - # - -proc lto_get_version*(): cstring{.cdecl, dynlib: libname, - importc: "lto_get_version".} - #* - # * Returns the last error string or NULL if last operation was sucessful. - # -proc lto_get_error_message*(): cstring{.cdecl, dynlib: libname, - importc: "lto_get_error_message".} - #* - # * Checks if a file is a loadable object file. - # -proc lto_module_is_object_file*(path: cstring): bool{.cdecl, dynlib: libname, - importc: "lto_module_is_object_file".} - #* - # * Checks if a file is a loadable object compiled for requested target. - # -proc lto_module_is_object_file_for_target*(path: cstring, - target_triple_prefix: cstring): bool{.cdecl, dynlib: libname, - importc: "lto_module_is_object_file_for_target".} - #* - # * Checks if a buffer is a loadable object file. - # -proc lto_module_is_object_file_in_memory*(mem: pointer, len: size_t): bool{. - cdecl, dynlib: libname, importc: "lto_module_is_object_file_in_memory".} - #* - # * Checks if a buffer is a loadable object compiled for requested target. - # -proc lto_module_is_object_file_in_memory_for_target*(mem: pointer, len: size_t, - target_triple_prefix: cstring): bool{.cdecl, dynlib: libname, - importc: "lto_module_is_object_file_in_memory_for_target".} - #* - # * Loads an object file from disk. - # * Returns NULL on error (check lto_get_error_message() for details). - # -proc lto_module_create*(path: cstring): lto_module_t{.cdecl, dynlib: libname, - importc: "lto_module_create".} - #* - # * Loads an object file from memory. - # * Returns NULL on error (check lto_get_error_message() for details). - # -proc lto_module_create_from_memory*(mem: pointer, len: size_t): lto_module_t{. - cdecl, dynlib: libname, importc: "lto_module_create_from_memory".} - #* - # * Frees all memory internally allocated by the module. - # * Upon return the lto_module_t is no longer valid. - # -proc lto_module_dispose*(module: lto_module_t){.cdecl, dynlib: libname, - importc: "lto_module_dispose".} - #* - # * Returns triple string which the object module was compiled under. - # -proc lto_module_get_target_triple*(module: lto_module_t): cstring{.cdecl, - dynlib: libname, importc: "lto_module_get_target_triple".} - #* - # * Returns the number of symbols in the object module. - # -proc lto_module_get_num_symbols*(module: lto_module_t): dword{.cdecl, - dynlib: libname, importc: "lto_module_get_num_symbols".} - #* - # * Returns the name of the ith symbol in the object module. - # -proc lto_module_get_symbol_name*(module: lto_module_t, index: dword): cstring{. - cdecl, dynlib: libname, importc: "lto_module_get_symbol_name".} - #* - # * Returns the attributes of the ith symbol in the object module. - # -proc lto_module_get_symbol_attribute*(module: lto_module_t, index: dword): lto_symbol_attributes{. - cdecl, dynlib: libname, importc: "lto_module_get_symbol_attribute".} - #* - # * Instantiates a code generator. - # * Returns NULL on error (check lto_get_error_message() for details). - # -proc lto_codegen_create*(): lto_code_gen_t{.cdecl, dynlib: libname, - importc: "lto_codegen_create".} - #* - # * Frees all code generator and all memory it internally allocated. - # * Upon return the lto_code_gen_t is no longer valid. - # -proc lto_codegen_dispose*(para1: lto_code_gen_t){.cdecl, dynlib: libname, - importc: "lto_codegen_dispose".} - #* - # * Add an object module to the set of modules for which code will be generated. - # * Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_add_module*(cg: lto_code_gen_t, module: lto_module_t): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_add_module".} - #* - # * Sets if debug info should be generated. - # * Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_set_debug_model*(cg: lto_code_gen_t, para2: lto_debug_model): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_set_debug_model".} - #* - # * Sets which PIC code model to generated. - # * Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_set_pic_model*(cg: lto_code_gen_t, para2: lto_codegen_model): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_set_pic_model".} - #* - # * Sets the location of the "gcc" to run. If not set, libLTO will search for - # * "gcc" on the path. - # -proc lto_codegen_set_gcc_path*(cg: lto_code_gen_t, path: cstring){.cdecl, - dynlib: libname, importc: "lto_codegen_set_gcc_path".} - #* - # * Sets the location of the assembler tool to run. If not set, libLTO - # * will use gcc to invoke the assembler. - # -proc lto_codegen_set_assembler_path*(cg: lto_code_gen_t, path: cstring){.cdecl, - dynlib: libname, importc: "lto_codegen_set_assembler_path".} - #* - # * Adds to a list of all global symbols that must exist in the final - # * generated code. If a function is not listed, it might be - # * inlined into every usage and optimized away. - # -proc lto_codegen_add_must_preserve_symbol*(cg: lto_code_gen_t, symbol: cstring){. - cdecl, dynlib: libname, importc: "lto_codegen_add_must_preserve_symbol".} - #* - # * Writes a new object file at the specified path that contains the - # * merged contents of all modules added so far. - # * Returns true on error (check lto_get_error_message() for details). - # -proc lto_codegen_write_merged_modules*(cg: lto_code_gen_t, path: cstring): bool{. - cdecl, dynlib: libname, importc: "lto_codegen_write_merged_modules".} - #* - # * Generates code for all added modules into one native object file. - # * On sucess returns a pointer to a generated mach-o/ELF buffer and - # * length set to the buffer size. The buffer is owned by the - # * lto_code_gen_t and will be freed when lto_codegen_dispose() - # * is called, or lto_codegen_compile() is called again. - # * On failure, returns NULL (check lto_get_error_message() for details). - # -proc lto_codegen_compile*(cg: lto_code_gen_t, len: var int): pointer{.cdecl, - dynlib: libname, importc: "lto_codegen_compile".} - #* - # * Sets options to help debug codegen bugs. - # -proc lto_codegen_debug_options*(cg: lto_code_gen_t, para2: cstring){.cdecl, - dynlib: libname, importc: "lto_codegen_debug_options".} -# implementation |