diff options
Diffstat (limited to 'src/codegen/llvm/bindings.zig')
| -rw-r--r-- | src/codegen/llvm/bindings.zig | 1465 |
1 files changed, 10 insertions, 1455 deletions
diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig index d7144b36ce..affadef882 100644 --- a/src/codegen/llvm/bindings.zig +++ b/src/codegen/llvm/bindings.zig @@ -15,7 +15,14 @@ pub const Bool = enum(c_int) { return b != .False; } }; -pub const AttributeIndex = c_uint; + +pub const MemoryBuffer = opaque { + pub const createMemoryBufferWithMemoryRange = LLVMCreateMemoryBufferWithMemoryRange; + pub const dispose = LLVMDisposeMemoryBuffer; + + extern fn LLVMCreateMemoryBufferWithMemoryRange(InputData: [*]const u8, InputDataLength: usize, BufferName: ?[*:0]const u8, RequiresNullTerminator: Bool) *MemoryBuffer; + extern fn LLVMDisposeMemoryBuffer(MemBuf: *MemoryBuffer) void; +}; /// Make sure to use the *InContext functions instead of the global ones. pub const Context = opaque { @@ -25,382 +32,17 @@ pub const Context = opaque { pub const dispose = LLVMContextDispose; extern fn LLVMContextDispose(C: *Context) void; - pub const createEnumAttribute = LLVMCreateEnumAttribute; - extern fn LLVMCreateEnumAttribute(C: *Context, KindID: c_uint, Val: u64) *Attribute; - - pub const createTypeAttribute = LLVMCreateTypeAttribute; - extern fn LLVMCreateTypeAttribute(C: *Context, KindID: c_uint, Type: *Type) *Attribute; - - pub const createStringAttribute = LLVMCreateStringAttribute; - extern fn LLVMCreateStringAttribute(C: *Context, Key: [*]const u8, Key_Len: c_uint, Value: [*]const u8, Value_Len: c_uint) *Attribute; - - pub const pointerType = LLVMPointerTypeInContext; - extern fn LLVMPointerTypeInContext(C: *Context, AddressSpace: c_uint) *Type; - - pub const intType = LLVMIntTypeInContext; - extern fn LLVMIntTypeInContext(C: *Context, NumBits: c_uint) *Type; - - pub const halfType = LLVMHalfTypeInContext; - extern fn LLVMHalfTypeInContext(C: *Context) *Type; - - pub const bfloatType = LLVMBFloatTypeInContext; - extern fn LLVMBFloatTypeInContext(C: *Context) *Type; - - pub const floatType = LLVMFloatTypeInContext; - extern fn LLVMFloatTypeInContext(C: *Context) *Type; - - pub const doubleType = LLVMDoubleTypeInContext; - extern fn LLVMDoubleTypeInContext(C: *Context) *Type; - - pub const fp128Type = LLVMFP128TypeInContext; - extern fn LLVMFP128TypeInContext(C: *Context) *Type; - - pub const x86_fp80Type = LLVMX86FP80TypeInContext; - extern fn LLVMX86FP80TypeInContext(C: *Context) *Type; - - pub const ppc_fp128Type = LLVMPPCFP128TypeInContext; - extern fn LLVMPPCFP128TypeInContext(C: *Context) *Type; - - pub const x86_amxType = LLVMX86AMXTypeInContext; - extern fn LLVMX86AMXTypeInContext(C: *Context) *Type; - - pub const x86_mmxType = LLVMX86MMXTypeInContext; - extern fn LLVMX86MMXTypeInContext(C: *Context) *Type; - - pub const voidType = LLVMVoidTypeInContext; - extern fn LLVMVoidTypeInContext(C: *Context) *Type; - - pub const labelType = LLVMLabelTypeInContext; - extern fn LLVMLabelTypeInContext(C: *Context) *Type; - - pub const tokenType = LLVMTokenTypeInContext; - extern fn LLVMTokenTypeInContext(C: *Context) *Type; - - pub const metadataType = LLVMMetadataTypeInContext; - extern fn LLVMMetadataTypeInContext(C: *Context) *Type; - - pub const structType = LLVMStructTypeInContext; - extern fn LLVMStructTypeInContext( - C: *Context, - ElementTypes: [*]const *Type, - ElementCount: c_uint, - Packed: Bool, - ) *Type; - - pub const structCreateNamed = LLVMStructCreateNamed; - extern fn LLVMStructCreateNamed(C: *Context, Name: [*:0]const u8) *Type; - - pub const constString = LLVMConstStringInContext; - extern fn LLVMConstStringInContext(C: *Context, Str: [*]const u8, Length: c_uint, DontNullTerminate: Bool) *Value; - - pub const appendBasicBlock = LLVMAppendBasicBlockInContext; - extern fn LLVMAppendBasicBlockInContext(C: *Context, Fn: *Value, Name: [*:0]const u8) *BasicBlock; - - pub const createBuilder = LLVMCreateBuilderInContext; - extern fn LLVMCreateBuilderInContext(C: *Context) *Builder; + pub const parseBitcodeInContext2 = LLVMParseBitcodeInContext2; + extern fn LLVMParseBitcodeInContext2(C: *Context, MemBuf: *MemoryBuffer, OutModule: **Module) Bool; pub const setOptBisectLimit = ZigLLVMSetOptBisectLimit; extern fn ZigLLVMSetOptBisectLimit(C: *Context, limit: c_int) void; }; -pub const Value = opaque { - pub const addAttributeAtIndex = LLVMAddAttributeAtIndex; - extern fn LLVMAddAttributeAtIndex(F: *Value, Idx: AttributeIndex, A: *Attribute) void; - - pub const removeEnumAttributeAtIndex = LLVMRemoveEnumAttributeAtIndex; - extern fn LLVMRemoveEnumAttributeAtIndex(F: *Value, Idx: AttributeIndex, KindID: c_uint) void; - - pub const removeStringAttributeAtIndex = LLVMRemoveStringAttributeAtIndex; - extern fn LLVMRemoveStringAttributeAtIndex(F: *Value, Idx: AttributeIndex, K: [*]const u8, KLen: c_uint) void; - - pub const getFirstBasicBlock = LLVMGetFirstBasicBlock; - extern fn LLVMGetFirstBasicBlock(Fn: *Value) ?*BasicBlock; - - pub const addIncoming = LLVMAddIncoming; - extern fn LLVMAddIncoming( - PhiNode: *Value, - IncomingValues: [*]const *Value, - IncomingBlocks: [*]const *BasicBlock, - Count: c_uint, - ) void; - - pub const setGlobalConstant = LLVMSetGlobalConstant; - extern fn LLVMSetGlobalConstant(GlobalVar: *Value, IsConstant: Bool) void; - - pub const setLinkage = LLVMSetLinkage; - extern fn LLVMSetLinkage(Global: *Value, Linkage: Linkage) void; - - pub const setVisibility = LLVMSetVisibility; - extern fn LLVMSetVisibility(Global: *Value, Linkage: Visibility) void; - - pub const setUnnamedAddr = LLVMSetUnnamedAddr; - extern fn LLVMSetUnnamedAddr(Global: *Value, HasUnnamedAddr: Bool) void; - - pub const setThreadLocalMode = LLVMSetThreadLocalMode; - extern fn LLVMSetThreadLocalMode(Global: *Value, Mode: ThreadLocalMode) void; - - pub const setSection = LLVMSetSection; - extern fn LLVMSetSection(Global: *Value, Section: [*:0]const u8) void; - - pub const removeGlobalValue = ZigLLVMRemoveGlobalValue; - extern fn ZigLLVMRemoveGlobalValue(GlobalVal: *Value) void; - - pub const eraseGlobalValue = ZigLLVMEraseGlobalValue; - extern fn ZigLLVMEraseGlobalValue(GlobalVal: *Value) void; - - pub const deleteGlobalValue = ZigLLVMDeleteGlobalValue; - extern fn ZigLLVMDeleteGlobalValue(GlobalVal: *Value) void; - - pub const setAliasee = LLVMAliasSetAliasee; - extern fn LLVMAliasSetAliasee(Alias: *Value, Aliasee: *Value) void; - - pub const constAdd = LLVMConstAdd; - extern fn LLVMConstAdd(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constNSWAdd = LLVMConstNSWAdd; - extern fn LLVMConstNSWAdd(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constNUWAdd = LLVMConstNUWAdd; - extern fn LLVMConstNUWAdd(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constSub = LLVMConstSub; - extern fn LLVMConstSub(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constNSWSub = LLVMConstNSWSub; - extern fn LLVMConstNSWSub(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constNUWSub = LLVMConstNUWSub; - extern fn LLVMConstNUWSub(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constMul = LLVMConstMul; - extern fn LLVMConstMul(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constNSWMul = LLVMConstNSWMul; - extern fn LLVMConstNSWMul(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constNUWMul = LLVMConstNUWMul; - extern fn LLVMConstNUWMul(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constAnd = LLVMConstAnd; - extern fn LLVMConstAnd(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constOr = LLVMConstOr; - extern fn LLVMConstOr(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constXor = LLVMConstXor; - extern fn LLVMConstXor(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constShl = LLVMConstShl; - extern fn LLVMConstShl(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constLShr = LLVMConstLShr; - extern fn LLVMConstLShr(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constAShr = LLVMConstAShr; - extern fn LLVMConstAShr(LHSConstant: *Value, RHSConstant: *Value) *Value; - - pub const constTrunc = LLVMConstTrunc; - extern fn LLVMConstTrunc(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constSExt = LLVMConstSExt; - extern fn LLVMConstSExt(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constZExt = LLVMConstZExt; - extern fn LLVMConstZExt(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constFPTrunc = LLVMConstFPTrunc; - extern fn LLVMConstFPTrunc(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constFPExt = LLVMConstFPExt; - extern fn LLVMConstFPExt(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constUIToFP = LLVMConstUIToFP; - extern fn LLVMConstUIToFP(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constSIToFP = LLVMConstSIToFP; - extern fn LLVMConstSIToFP(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constFPToUI = LLVMConstFPToUI; - extern fn LLVMConstFPToUI(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constFPToSI = LLVMConstFPToSI; - extern fn LLVMConstFPToSI(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constPtrToInt = LLVMConstPtrToInt; - extern fn LLVMConstPtrToInt(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constIntToPtr = LLVMConstIntToPtr; - extern fn LLVMConstIntToPtr(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constBitCast = LLVMConstBitCast; - extern fn LLVMConstBitCast(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constAddrSpaceCast = LLVMConstAddrSpaceCast; - extern fn LLVMConstAddrSpaceCast(ConstantVal: *Value, ToType: *Type) *Value; - - pub const constExtractElement = LLVMConstExtractElement; - extern fn LLVMConstExtractElement(VectorConstant: *Value, IndexConstant: *Value) *Value; - - pub const constInsertElement = LLVMConstInsertElement; - extern fn LLVMConstInsertElement( - VectorConstant: *Value, - ElementValueConstant: *Value, - IndexConstant: *Value, - ) *Value; - - pub const constShuffleVector = LLVMConstShuffleVector; - extern fn LLVMConstShuffleVector( - VectorAConstant: *Value, - VectorBConstant: *Value, - MaskConstant: *Value, - ) *Value; - - pub const isConstant = LLVMIsConstant; - extern fn LLVMIsConstant(Val: *Value) Bool; - - pub const blockAddress = LLVMBlockAddress; - extern fn LLVMBlockAddress(F: *Value, BB: *BasicBlock) *Value; - - pub const setWeak = LLVMSetWeak; - extern fn LLVMSetWeak(CmpXchgInst: *Value, IsWeak: Bool) void; - - pub const setOrdering = LLVMSetOrdering; - extern fn LLVMSetOrdering(MemoryAccessInst: *Value, Ordering: AtomicOrdering) void; - - pub const setVolatile = LLVMSetVolatile; - extern fn LLVMSetVolatile(MemoryAccessInst: *Value, IsVolatile: Bool) void; - - pub const setAlignment = LLVMSetAlignment; - extern fn LLVMSetAlignment(V: *Value, Bytes: c_uint) void; - - pub const getAlignment = LLVMGetAlignment; - extern fn LLVMGetAlignment(V: *Value) c_uint; - - pub const setFunctionCallConv = LLVMSetFunctionCallConv; - extern fn LLVMSetFunctionCallConv(Fn: *Value, CC: CallConv) void; - - pub const setInstructionCallConv = LLVMSetInstructionCallConv; - extern fn LLVMSetInstructionCallConv(Instr: *Value, CC: CallConv) void; - - pub const setTailCallKind = ZigLLVMSetTailCallKind; - extern fn ZigLLVMSetTailCallKind(CallInst: *Value, TailCallKind: TailCallKind) void; - - pub const addCallSiteAttribute = LLVMAddCallSiteAttribute; - extern fn LLVMAddCallSiteAttribute(C: *Value, Idx: AttributeIndex, A: *Attribute) void; - - pub const fnSetSubprogram = ZigLLVMFnSetSubprogram; - extern fn ZigLLVMFnSetSubprogram(f: *Value, subprogram: *DISubprogram) void; - - pub const setValueName = LLVMSetValueName2; - extern fn LLVMSetValueName2(Val: *Value, Name: [*]const u8, NameLen: usize) void; - - pub const takeName = ZigLLVMTakeName; - extern fn ZigLLVMTakeName(new_owner: *Value, victim: *Value) void; - - pub const getParam = LLVMGetParam; - extern fn LLVMGetParam(Fn: *Value, Index: c_uint) *Value; - - pub const setInitializer = ZigLLVMSetInitializer; - extern fn ZigLLVMSetInitializer(GlobalVar: *Value, ConstantVal: ?*Value) void; - - pub const setDLLStorageClass = LLVMSetDLLStorageClass; - extern fn LLVMSetDLLStorageClass(Global: *Value, Class: DLLStorageClass) void; - - pub const addCase = LLVMAddCase; - extern fn LLVMAddCase(Switch: *Value, OnVal: *Value, Dest: *BasicBlock) void; - - pub const replaceAllUsesWith = LLVMReplaceAllUsesWith; - extern fn LLVMReplaceAllUsesWith(OldVal: *Value, NewVal: *Value) void; - - pub const attachMetaData = ZigLLVMAttachMetaData; - extern fn ZigLLVMAttachMetaData(GlobalVar: *Value, DIG: *DIGlobalVariableExpression) void; - - pub const dump = LLVMDumpValue; - extern fn LLVMDumpValue(Val: *Value) void; -}; - -pub const Type = opaque { - pub const constNull = LLVMConstNull; - extern fn LLVMConstNull(Ty: *Type) *Value; - - pub const constInt = LLVMConstInt; - extern fn LLVMConstInt(IntTy: *Type, N: c_ulonglong, SignExtend: Bool) *Value; - - pub const constIntOfArbitraryPrecision = LLVMConstIntOfArbitraryPrecision; - extern fn LLVMConstIntOfArbitraryPrecision(IntTy: *Type, NumWords: c_uint, Words: [*]const u64) *Value; - - pub const constReal = LLVMConstReal; - extern fn LLVMConstReal(RealTy: *Type, N: f64) *Value; - - pub const constArray2 = LLVMConstArray2; - extern fn LLVMConstArray2(ElementTy: *Type, ConstantVals: [*]const *Value, Length: u64) *Value; - - pub const constNamedStruct = LLVMConstNamedStruct; - extern fn LLVMConstNamedStruct( - StructTy: *Type, - ConstantVals: [*]const *Value, - Count: c_uint, - ) *Value; - - pub const getUndef = LLVMGetUndef; - extern fn LLVMGetUndef(Ty: *Type) *Value; - - pub const getPoison = LLVMGetPoison; - extern fn LLVMGetPoison(Ty: *Type) *Value; - - pub const arrayType2 = LLVMArrayType2; - extern fn LLVMArrayType2(ElementType: *Type, ElementCount: u64) *Type; - - pub const vectorType = LLVMVectorType; - extern fn LLVMVectorType(ElementType: *Type, ElementCount: c_uint) *Type; - - pub const scalableVectorType = LLVMScalableVectorType; - extern fn LLVMScalableVectorType(ElementType: *Type, ElementCount: c_uint) *Type; - - pub const structSetBody = LLVMStructSetBody; - extern fn LLVMStructSetBody( - StructTy: *Type, - ElementTypes: [*]*Type, - ElementCount: c_uint, - Packed: Bool, - ) void; - - pub const isSized = LLVMTypeIsSized; - extern fn LLVMTypeIsSized(Ty: *Type) Bool; - - pub const constGEP = LLVMConstGEP2; - extern fn LLVMConstGEP2( - Ty: *Type, - ConstantVal: *Value, - ConstantIndices: [*]const *Value, - NumIndices: c_uint, - ) *Value; - - pub const constInBoundsGEP = LLVMConstInBoundsGEP2; - extern fn LLVMConstInBoundsGEP2( - Ty: *Type, - ConstantVal: *Value, - ConstantIndices: [*]const *Value, - NumIndices: c_uint, - ) *Value; - - pub const dump = LLVMDumpType; - extern fn LLVMDumpType(Ty: *Type) void; -}; - pub const Module = opaque { - pub const createWithName = LLVMModuleCreateWithNameInContext; - extern fn LLVMModuleCreateWithNameInContext(ModuleID: [*:0]const u8, C: *Context) *Module; - pub const dispose = LLVMDisposeModule; extern fn LLVMDisposeModule(*Module) void; - pub const verify = LLVMVerifyModule; - extern fn LLVMVerifyModule(*Module, Action: VerifierFailureAction, OutMessage: *[*:0]const u8) Bool; - - pub const setModuleDataLayout = LLVMSetModuleDataLayout; - extern fn LLVMSetModuleDataLayout(*Module, *TargetData) void; - pub const setModulePICLevel = ZigLLVMSetModulePICLevel; extern fn ZigLLVMSetModulePICLevel(module: *Module) void; @@ -409,508 +51,11 @@ pub const Module = opaque { pub const setModuleCodeModel = ZigLLVMSetModuleCodeModel; extern fn ZigLLVMSetModuleCodeModel(module: *Module, code_model: CodeModel) void; - - pub const addFunctionInAddressSpace = ZigLLVMAddFunctionInAddressSpace; - extern fn ZigLLVMAddFunctionInAddressSpace(*Module, Name: [*:0]const u8, FunctionTy: *Type, AddressSpace: c_uint) *Value; - - pub const printToString = LLVMPrintModuleToString; - extern fn LLVMPrintModuleToString(*Module) [*:0]const u8; - - pub const addGlobalInAddressSpace = LLVMAddGlobalInAddressSpace; - extern fn LLVMAddGlobalInAddressSpace(M: *Module, Ty: *Type, Name: [*:0]const u8, AddressSpace: c_uint) *Value; - - pub const dump = LLVMDumpModule; - extern fn LLVMDumpModule(M: *Module) void; - - pub const addAlias = LLVMAddAlias2; - extern fn LLVMAddAlias2( - M: *Module, - Ty: *Type, - AddrSpace: c_uint, - Aliasee: *Value, - Name: [*:0]const u8, - ) *Value; - - pub const setTarget = LLVMSetTarget; - extern fn LLVMSetTarget(M: *Module, Triple: [*:0]const u8) void; - - pub const addModuleDebugInfoFlag = ZigLLVMAddModuleDebugInfoFlag; - extern fn ZigLLVMAddModuleDebugInfoFlag(module: *Module, dwarf64: bool) void; - - pub const addModuleCodeViewFlag = ZigLLVMAddModuleCodeViewFlag; - extern fn ZigLLVMAddModuleCodeViewFlag(module: *Module) void; - - pub const createDIBuilder = ZigLLVMCreateDIBuilder; - extern fn ZigLLVMCreateDIBuilder(module: *Module, allow_unresolved: bool) *DIBuilder; - - pub const setModuleInlineAsm = LLVMSetModuleInlineAsm2; - extern fn LLVMSetModuleInlineAsm2(M: *Module, Asm: [*]const u8, Len: usize) void; - - pub const printModuleToFile = LLVMPrintModuleToFile; - extern fn LLVMPrintModuleToFile(M: *Module, Filename: [*:0]const u8, ErrorMessage: *[*:0]const u8) Bool; - - pub const writeBitcodeToFile = LLVMWriteBitcodeToFile; - extern fn LLVMWriteBitcodeToFile(M: *Module, Path: [*:0]const u8) c_int; }; pub const disposeMessage = LLVMDisposeMessage; extern fn LLVMDisposeMessage(Message: [*:0]const u8) void; -pub const VerifierFailureAction = enum(c_int) { - AbortProcess, - PrintMessage, - ReturnStatus, -}; - -pub const constVector = LLVMConstVector; -extern fn LLVMConstVector( - ScalarConstantVals: [*]*Value, - Size: c_uint, -) *Value; - -pub const constICmp = LLVMConstICmp; -extern fn LLVMConstICmp(Predicate: IntPredicate, LHSConstant: *Value, RHSConstant: *Value) *Value; - -pub const constFCmp = LLVMConstFCmp; -extern fn LLVMConstFCmp(Predicate: RealPredicate, LHSConstant: *Value, RHSConstant: *Value) *Value; - -pub const getEnumAttributeKindForName = LLVMGetEnumAttributeKindForName; -extern fn LLVMGetEnumAttributeKindForName(Name: [*]const u8, SLen: usize) c_uint; - -pub const getInlineAsm = LLVMGetInlineAsm; -extern fn LLVMGetInlineAsm( - Ty: *Type, - AsmString: [*]const u8, - AsmStringSize: usize, - Constraints: [*]const u8, - ConstraintsSize: usize, - HasSideEffects: Bool, - IsAlignStack: Bool, - Dialect: InlineAsmDialect, - CanThrow: Bool, -) *Value; - -pub const functionType = LLVMFunctionType; -extern fn LLVMFunctionType( - ReturnType: *Type, - ParamTypes: [*]const *Type, - ParamCount: c_uint, - IsVarArg: Bool, -) *Type; - -pub const InlineAsmDialect = enum(c_uint) { ATT, Intel }; - -pub const Attribute = opaque {}; - -pub const Builder = opaque { - pub const dispose = LLVMDisposeBuilder; - extern fn LLVMDisposeBuilder(Builder: *Builder) void; - - pub const positionBuilder = LLVMPositionBuilder; - extern fn LLVMPositionBuilder( - Builder: *Builder, - Block: *BasicBlock, - Instr: ?*Value, - ) void; - - pub const buildZExt = LLVMBuildZExt; - extern fn LLVMBuildZExt( - *Builder, - Value: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildSExt = LLVMBuildSExt; - extern fn LLVMBuildSExt( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildCall = LLVMBuildCall2; - extern fn LLVMBuildCall2( - *Builder, - *Type, - Fn: *Value, - Args: [*]const *Value, - NumArgs: c_uint, - Name: [*:0]const u8, - ) *Value; - - pub const buildRetVoid = LLVMBuildRetVoid; - extern fn LLVMBuildRetVoid(*Builder) *Value; - - pub const buildRet = LLVMBuildRet; - extern fn LLVMBuildRet(*Builder, V: *Value) *Value; - - pub const buildUnreachable = LLVMBuildUnreachable; - extern fn LLVMBuildUnreachable(*Builder) *Value; - - pub const buildAlloca = LLVMBuildAlloca; - extern fn LLVMBuildAlloca(*Builder, Ty: *Type, Name: [*:0]const u8) *Value; - - pub const buildStore = LLVMBuildStore; - extern fn LLVMBuildStore(*Builder, Val: *Value, Ptr: *Value) *Value; - - pub const buildLoad = LLVMBuildLoad2; - extern fn LLVMBuildLoad2(*Builder, Ty: *Type, PointerVal: *Value, Name: [*:0]const u8) *Value; - - pub const buildFAdd = LLVMBuildFAdd; - extern fn LLVMBuildFAdd(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildAdd = LLVMBuildAdd; - extern fn LLVMBuildAdd(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNSWAdd = LLVMBuildNSWAdd; - extern fn LLVMBuildNSWAdd(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNUWAdd = LLVMBuildNUWAdd; - extern fn LLVMBuildNUWAdd(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildFSub = LLVMBuildFSub; - extern fn LLVMBuildFSub(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildFNeg = LLVMBuildFNeg; - extern fn LLVMBuildFNeg(*Builder, V: *Value, Name: [*:0]const u8) *Value; - - pub const buildSub = LLVMBuildSub; - extern fn LLVMBuildSub(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNSWSub = LLVMBuildNSWSub; - extern fn LLVMBuildNSWSub(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNUWSub = LLVMBuildNUWSub; - extern fn LLVMBuildNUWSub(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildFMul = LLVMBuildFMul; - extern fn LLVMBuildFMul(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildMul = LLVMBuildMul; - extern fn LLVMBuildMul(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNSWMul = LLVMBuildNSWMul; - extern fn LLVMBuildNSWMul(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNUWMul = LLVMBuildNUWMul; - extern fn LLVMBuildNUWMul(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildUDiv = LLVMBuildUDiv; - extern fn LLVMBuildUDiv(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildSDiv = LLVMBuildSDiv; - extern fn LLVMBuildSDiv(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildFDiv = LLVMBuildFDiv; - extern fn LLVMBuildFDiv(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildURem = LLVMBuildURem; - extern fn LLVMBuildURem(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildSRem = LLVMBuildSRem; - extern fn LLVMBuildSRem(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildFRem = LLVMBuildFRem; - extern fn LLVMBuildFRem(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildAnd = LLVMBuildAnd; - extern fn LLVMBuildAnd(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildLShr = LLVMBuildLShr; - extern fn LLVMBuildLShr(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildAShr = LLVMBuildAShr; - extern fn LLVMBuildAShr(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildLShrExact = ZigLLVMBuildLShrExact; - extern fn ZigLLVMBuildLShrExact(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildAShrExact = ZigLLVMBuildAShrExact; - extern fn ZigLLVMBuildAShrExact(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildShl = LLVMBuildShl; - extern fn LLVMBuildShl(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNUWShl = ZigLLVMBuildNUWShl; - extern fn ZigLLVMBuildNUWShl(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildNSWShl = ZigLLVMBuildNSWShl; - extern fn ZigLLVMBuildNSWShl(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildOr = LLVMBuildOr; - extern fn LLVMBuildOr(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildXor = LLVMBuildXor; - extern fn LLVMBuildXor(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildBitCast = LLVMBuildBitCast; - extern fn LLVMBuildBitCast(*Builder, Val: *Value, DestTy: *Type, Name: [*:0]const u8) *Value; - - pub const buildGEP = LLVMBuildGEP2; - extern fn LLVMBuildGEP2( - B: *Builder, - Ty: *Type, - Pointer: *Value, - Indices: [*]const *Value, - NumIndices: c_uint, - Name: [*:0]const u8, - ) *Value; - - pub const buildInBoundsGEP = LLVMBuildInBoundsGEP2; - extern fn LLVMBuildInBoundsGEP2( - B: *Builder, - Ty: *Type, - Pointer: *Value, - Indices: [*]const *Value, - NumIndices: c_uint, - Name: [*:0]const u8, - ) *Value; - - pub const buildICmp = LLVMBuildICmp; - extern fn LLVMBuildICmp(*Builder, Op: IntPredicate, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildFCmp = LLVMBuildFCmp; - extern fn LLVMBuildFCmp(*Builder, Op: RealPredicate, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildBr = LLVMBuildBr; - extern fn LLVMBuildBr(*Builder, Dest: *BasicBlock) *Value; - - pub const buildCondBr = LLVMBuildCondBr; - extern fn LLVMBuildCondBr(*Builder, If: *Value, Then: *BasicBlock, Else: *BasicBlock) *Value; - - pub const buildSwitch = LLVMBuildSwitch; - extern fn LLVMBuildSwitch(*Builder, V: *Value, Else: *BasicBlock, NumCases: c_uint) *Value; - - pub const buildPhi = LLVMBuildPhi; - extern fn LLVMBuildPhi(*Builder, Ty: *Type, Name: [*:0]const u8) *Value; - - pub const buildExtractValue = LLVMBuildExtractValue; - extern fn LLVMBuildExtractValue( - *Builder, - AggVal: *Value, - Index: c_uint, - Name: [*:0]const u8, - ) *Value; - - pub const buildExtractElement = LLVMBuildExtractElement; - extern fn LLVMBuildExtractElement( - *Builder, - VecVal: *Value, - Index: *Value, - Name: [*:0]const u8, - ) *Value; - - pub const buildInsertElement = LLVMBuildInsertElement; - extern fn LLVMBuildInsertElement( - *Builder, - VecVal: *Value, - EltVal: *Value, - Index: *Value, - Name: [*:0]const u8, - ) *Value; - - pub const buildPtrToInt = LLVMBuildPtrToInt; - extern fn LLVMBuildPtrToInt( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildIntToPtr = LLVMBuildIntToPtr; - extern fn LLVMBuildIntToPtr( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildTrunc = LLVMBuildTrunc; - extern fn LLVMBuildTrunc( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildInsertValue = LLVMBuildInsertValue; - extern fn LLVMBuildInsertValue( - *Builder, - AggVal: *Value, - EltVal: *Value, - Index: c_uint, - Name: [*:0]const u8, - ) *Value; - - pub const buildAtomicCmpXchg = LLVMBuildAtomicCmpXchg; - extern fn LLVMBuildAtomicCmpXchg( - builder: *Builder, - ptr: *Value, - cmp: *Value, - new_val: *Value, - success_ordering: AtomicOrdering, - failure_ordering: AtomicOrdering, - is_single_threaded: Bool, - ) *Value; - - pub const buildSelect = LLVMBuildSelect; - extern fn LLVMBuildSelect( - *Builder, - If: *Value, - Then: *Value, - Else: *Value, - Name: [*:0]const u8, - ) *Value; - - pub const buildFence = LLVMBuildFence; - extern fn LLVMBuildFence( - B: *Builder, - ordering: AtomicOrdering, - singleThread: Bool, - Name: [*:0]const u8, - ) *Value; - - pub const buildAtomicRmw = LLVMBuildAtomicRMW; - extern fn LLVMBuildAtomicRMW( - B: *Builder, - op: AtomicRMWBinOp, - PTR: *Value, - Val: *Value, - ordering: AtomicOrdering, - singleThread: Bool, - ) *Value; - - pub const buildFPToUI = LLVMBuildFPToUI; - extern fn LLVMBuildFPToUI( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildFPToSI = LLVMBuildFPToSI; - extern fn LLVMBuildFPToSI( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildUIToFP = LLVMBuildUIToFP; - extern fn LLVMBuildUIToFP( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildSIToFP = LLVMBuildSIToFP; - extern fn LLVMBuildSIToFP( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildFPTrunc = LLVMBuildFPTrunc; - extern fn LLVMBuildFPTrunc( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildFPExt = LLVMBuildFPExt; - extern fn LLVMBuildFPExt( - *Builder, - Val: *Value, - DestTy: *Type, - Name: [*:0]const u8, - ) *Value; - - pub const buildExactUDiv = LLVMBuildExactUDiv; - extern fn LLVMBuildExactUDiv(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const buildExactSDiv = LLVMBuildExactSDiv; - extern fn LLVMBuildExactSDiv(*Builder, LHS: *Value, RHS: *Value, Name: [*:0]const u8) *Value; - - pub const setCurrentDebugLocation = ZigLLVMSetCurrentDebugLocation2; - extern fn ZigLLVMSetCurrentDebugLocation2(builder: *Builder, line: c_uint, column: c_uint, scope: *DIScope, inlined_at: ?*DILocation) void; - - pub const clearCurrentDebugLocation = ZigLLVMClearCurrentDebugLocation; - extern fn ZigLLVMClearCurrentDebugLocation(builder: *Builder) void; - - pub const getCurrentDebugLocation2 = LLVMGetCurrentDebugLocation2; - extern fn LLVMGetCurrentDebugLocation2(Builder: *Builder) *Metadata; - - pub const setCurrentDebugLocation2 = LLVMSetCurrentDebugLocation2; - extern fn LLVMSetCurrentDebugLocation2(Builder: *Builder, Loc: *Metadata) void; - - pub const buildShuffleVector = LLVMBuildShuffleVector; - extern fn LLVMBuildShuffleVector(*Builder, V1: *Value, V2: *Value, Mask: *Value, Name: [*:0]const u8) *Value; - - pub const setFastMath = ZigLLVMSetFastMath; - extern fn ZigLLVMSetFastMath(B: *Builder, on_state: bool) void; - - pub const buildAddrSpaceCast = LLVMBuildAddrSpaceCast; - extern fn LLVMBuildAddrSpaceCast(B: *Builder, Val: *Value, DestTy: *Type, Name: [*:0]const u8) *Value; - - pub const buildAllocaInAddressSpace = ZigLLVMBuildAllocaInAddressSpace; - extern fn ZigLLVMBuildAllocaInAddressSpace(B: *Builder, Ty: *Type, AddressSpace: c_uint, Name: [*:0]const u8) *Value; - - pub const buildVAArg = LLVMBuildVAArg; - extern fn LLVMBuildVAArg(*Builder, List: *Value, Ty: *Type, Name: [*:0]const u8) *Value; -}; - -pub const MDString = opaque { - pub const get = LLVMMDStringInContext2; - extern fn LLVMMDStringInContext2(C: *Context, Str: [*]const u8, SLen: usize) *MDString; -}; - -pub const DIScope = opaque { - pub const toNode = ZigLLVMScopeToNode; - extern fn ZigLLVMScopeToNode(scope: *DIScope) *DINode; -}; - -pub const DINode = opaque {}; -pub const Metadata = opaque {}; - -pub const IntPredicate = enum(c_uint) { - EQ = 32, - NE = 33, - UGT = 34, - UGE = 35, - ULT = 36, - ULE = 37, - SGT = 38, - SGE = 39, - SLT = 40, - SLE = 41, -}; - -pub const RealPredicate = enum(c_uint) { - OEQ = 1, - OGT = 2, - OGE = 3, - OLT = 4, - OLE = 5, - ONE = 6, - ORD = 7, - UNO = 8, - UEQ = 9, - UGT = 10, - UGE = 11, - ULT = 12, - ULE = 13, - UNE = 14, -}; - -pub const BasicBlock = opaque { - pub const deleteBasicBlock = LLVMDeleteBasicBlock; - extern fn LLVMDeleteBasicBlock(BB: *BasicBlock) void; -}; - pub const TargetMachine = opaque { pub const create = ZigLLVMCreateTargetMachine; extern fn ZigLLVMCreateTargetMachine( @@ -945,23 +90,11 @@ pub const TargetMachine = opaque { llvm_ir_filename: ?[*:0]const u8, bitcode_filename: ?[*:0]const u8, ) bool; - - pub const createTargetDataLayout = LLVMCreateTargetDataLayout; - extern fn LLVMCreateTargetDataLayout(*TargetMachine) *TargetData; }; pub const TargetData = opaque { pub const dispose = LLVMDisposeTargetData; extern fn LLVMDisposeTargetData(*TargetData) void; - - pub const abiAlignmentOfType = LLVMABIAlignmentOfType; - extern fn LLVMABIAlignmentOfType(TD: *TargetData, Ty: *Type) c_uint; - - pub const abiSizeOfType = LLVMABISizeOfType; - extern fn LLVMABISizeOfType(TD: *TargetData, Ty: *Type) c_ulonglong; - - pub const stringRep = LLVMCopyStringRepOfTargetData; - extern fn LLVMCopyStringRepOfTargetData(TD: *TargetData) [*:0]const u8; }; pub const CodeModel = enum(c_int) { @@ -991,11 +124,6 @@ pub const RelocMode = enum(c_int) { ROPI_RWPI, }; -pub const CodeGenFileType = enum(c_int) { - AssemblyFile, - ObjectFile, -}; - pub const ABIType = enum(c_int) { /// Target-specific (either soft or hard depending on triple, etc). Default, @@ -1266,576 +394,3 @@ extern fn ZigLLVMWriteImportLibrary( output_lib_path: [*:0]const u8, kill_at: bool, ) bool; - -pub const Linkage = enum(c_uint) { - External, - AvailableExternally, - LinkOnceAny, - LinkOnceODR, - LinkOnceODRAutoHide, - WeakAny, - WeakODR, - Appending, - Internal, - Private, - DLLImport, - DLLExport, - ExternalWeak, - Ghost, - Common, - LinkerPrivate, - LinkerPrivateWeak, -}; - -pub const Visibility = enum(c_uint) { - Default, - Hidden, - Protected, -}; - -pub const ThreadLocalMode = enum(c_uint) { - NotThreadLocal, - GeneralDynamicTLSModel, - LocalDynamicTLSModel, - InitialExecTLSModel, - LocalExecTLSModel, -}; - -pub const AtomicOrdering = enum(c_uint) { - NotAtomic = 0, - Unordered = 1, - Monotonic = 2, - Acquire = 4, - Release = 5, - AcquireRelease = 6, - SequentiallyConsistent = 7, -}; - -pub const AtomicRMWBinOp = enum(c_int) { - Xchg, - Add, - Sub, - And, - Nand, - Or, - Xor, - Max, - Min, - UMax, - UMin, - FAdd, - FSub, - FMax, - FMin, -}; - -pub const CallConv = enum(c_uint) { - C = 0, - Fast = 8, - Cold = 9, - GHC = 10, - HiPE = 11, - WebKit_JS = 12, - AnyReg = 13, - PreserveMost = 14, - PreserveAll = 15, - Swift = 16, - CXX_FAST_TLS = 17, - - X86_StdCall = 64, - X86_FastCall = 65, - ARM_APCS = 66, - ARM_AAPCS = 67, - ARM_AAPCS_VFP = 68, - MSP430_INTR = 69, - X86_ThisCall = 70, - PTX_Kernel = 71, - PTX_Device = 72, - SPIR_FUNC = 75, - SPIR_KERNEL = 76, - Intel_OCL_BI = 77, - X86_64_SysV = 78, - Win64 = 79, - X86_VectorCall = 80, - HHVM = 81, - HHVM_C = 82, - X86_INTR = 83, - AVR_INTR = 84, - AVR_SIGNAL = 85, - AVR_BUILTIN = 86, - AMDGPU_VS = 87, - AMDGPU_GS = 88, - AMDGPU_PS = 89, - AMDGPU_CS = 90, - AMDGPU_KERNEL = 91, - X86_RegCall = 92, - AMDGPU_HS = 93, - MSP430_BUILTIN = 94, - AMDGPU_LS = 95, - AMDGPU_ES = 96, - AArch64_VectorCall = 97, -}; - -pub const CallAttr = enum(c_int) { - Auto, - NeverTail, - NeverInline, - AlwaysTail, - AlwaysInline, -}; - -pub const TailCallKind = enum(c_uint) { - None, - Tail, - MustTail, - NoTail, -}; - -pub const DLLStorageClass = enum(c_uint) { - Default, - DLLImport, - DLLExport, -}; - -pub const address_space = struct { - pub const default: c_uint = 0; - - // See llvm/lib/Target/X86/X86.h - pub const x86_64 = x86; - pub const x86 = struct { - pub const gs: c_uint = 256; - pub const fs: c_uint = 257; - pub const ss: c_uint = 258; - - pub const ptr32_sptr: c_uint = 270; - pub const ptr32_uptr: c_uint = 271; - pub const ptr64: c_uint = 272; - }; - - // See llvm/lib/Target/AVR/AVR.h - pub const avr = struct { - pub const flash: c_uint = 1; - pub const flash1: c_uint = 2; - pub const flash2: c_uint = 3; - pub const flash3: c_uint = 4; - pub const flash4: c_uint = 5; - pub const flash5: c_uint = 6; - }; - - // See llvm/lib/Target/NVPTX/NVPTX.h - pub const nvptx = struct { - pub const generic: c_uint = 0; - pub const global: c_uint = 1; - pub const constant: c_uint = 2; - pub const shared: c_uint = 3; - pub const param: c_uint = 4; - pub const local: c_uint = 5; - }; - - // See llvm/lib/Target/AMDGPU/AMDGPU.h - pub const amdgpu = struct { - pub const flat: c_uint = 0; - pub const global: c_uint = 1; - pub const region: c_uint = 2; - pub const local: c_uint = 3; - pub const constant: c_uint = 4; - pub const private: c_uint = 5; - pub const constant_32bit: c_uint = 6; - pub const buffer_fat_pointer: c_uint = 7; - pub const param_d: c_uint = 6; - pub const param_i: c_uint = 7; - pub const constant_buffer_0: c_uint = 8; - pub const constant_buffer_1: c_uint = 9; - pub const constant_buffer_2: c_uint = 10; - pub const constant_buffer_3: c_uint = 11; - pub const constant_buffer_4: c_uint = 12; - pub const constant_buffer_5: c_uint = 13; - pub const constant_buffer_6: c_uint = 14; - pub const constant_buffer_7: c_uint = 15; - pub const constant_buffer_8: c_uint = 16; - pub const constant_buffer_9: c_uint = 17; - pub const constant_buffer_10: c_uint = 18; - pub const constant_buffer_11: c_uint = 19; - pub const constant_buffer_12: c_uint = 20; - pub const constant_buffer_13: c_uint = 21; - pub const constant_buffer_14: c_uint = 22; - pub const constant_buffer_15: c_uint = 23; - }; - - // See llvm/lib/Target/WebAssembly/Utils/WebAssemblyTypetilities.h - pub const wasm = struct { - pub const variable: c_uint = 1; - pub const externref: c_uint = 10; - pub const funcref: c_uint = 20; - }; -}; - -pub const DIEnumerator = opaque {}; -pub const DILocalVariable = opaque {}; -pub const DILocation = opaque {}; -pub const DIGlobalExpression = opaque {}; - -pub const DIGlobalVariable = opaque { - pub const toNode = ZigLLVMGlobalVariableToNode; - extern fn ZigLLVMGlobalVariableToNode(global_variable: *DIGlobalVariable) *DINode; - - pub const replaceLinkageName = ZigLLVMGlobalVariableReplaceLinkageName; - extern fn ZigLLVMGlobalVariableReplaceLinkageName(global_variable: *DIGlobalVariable, linkage_name: *MDString) void; -}; -pub const DIGlobalVariableExpression = opaque { - pub const getVariable = ZigLLVMGlobalGetVariable; - extern fn ZigLLVMGlobalGetVariable(global_variable: *DIGlobalVariableExpression) *DIGlobalVariable; -}; -pub const DIType = opaque { - pub const toScope = ZigLLVMTypeToScope; - extern fn ZigLLVMTypeToScope(ty: *DIType) *DIScope; - - pub const toNode = ZigLLVMTypeToNode; - extern fn ZigLLVMTypeToNode(ty: *DIType) *DINode; -}; -pub const DIFile = opaque { - pub const toScope = ZigLLVMFileToScope; - extern fn ZigLLVMFileToScope(difile: *DIFile) *DIScope; - - pub const toNode = ZigLLVMFileToNode; - extern fn ZigLLVMFileToNode(difile: *DIFile) *DINode; -}; -pub const DILexicalBlock = opaque { - pub const toScope = ZigLLVMLexicalBlockToScope; - extern fn ZigLLVMLexicalBlockToScope(lexical_block: *DILexicalBlock) *DIScope; - - pub const toNode = ZigLLVMLexicalBlockToNode; - extern fn ZigLLVMLexicalBlockToNode(lexical_block: *DILexicalBlock) *DINode; -}; -pub const DICompileUnit = opaque { - pub const toScope = ZigLLVMCompileUnitToScope; - extern fn ZigLLVMCompileUnitToScope(compile_unit: *DICompileUnit) *DIScope; - - pub const toNode = ZigLLVMCompileUnitToNode; - extern fn ZigLLVMCompileUnitToNode(compile_unit: *DICompileUnit) *DINode; -}; -pub const DISubprogram = opaque { - pub const toScope = ZigLLVMSubprogramToScope; - extern fn ZigLLVMSubprogramToScope(subprogram: *DISubprogram) *DIScope; - - pub const toNode = ZigLLVMSubprogramToNode; - extern fn ZigLLVMSubprogramToNode(subprogram: *DISubprogram) *DINode; - - pub const replaceLinkageName = ZigLLVMSubprogramReplaceLinkageName; - extern fn ZigLLVMSubprogramReplaceLinkageName(subprogram: *DISubprogram, linkage_name: *MDString) void; -}; - -pub const getDebugLoc = ZigLLVMGetDebugLoc2; -extern fn ZigLLVMGetDebugLoc2(line: c_uint, col: c_uint, scope: *DIScope, inlined_at: ?*DILocation) *DILocation; - -pub const DIBuilder = opaque { - pub const dispose = ZigLLVMDisposeDIBuilder; - extern fn ZigLLVMDisposeDIBuilder(dib: *DIBuilder) void; - - pub const finalize = ZigLLVMDIBuilderFinalize; - extern fn ZigLLVMDIBuilderFinalize(dib: *DIBuilder) void; - - pub const createPointerType = ZigLLVMCreateDebugPointerType; - extern fn ZigLLVMCreateDebugPointerType( - dib: *DIBuilder, - pointee_type: *DIType, - size_in_bits: u64, - align_in_bits: u64, - name: [*:0]const u8, - ) *DIType; - - pub const createBasicType = ZigLLVMCreateDebugBasicType; - extern fn ZigLLVMCreateDebugBasicType( - dib: *DIBuilder, - name: [*:0]const u8, - size_in_bits: u64, - encoding: c_uint, - ) *DIType; - - pub const createArrayType = ZigLLVMCreateDebugArrayType; - extern fn ZigLLVMCreateDebugArrayType( - dib: *DIBuilder, - size_in_bits: u64, - align_in_bits: u64, - elem_type: *DIType, - elem_count: i64, - ) *DIType; - - pub const createEnumerator = ZigLLVMCreateDebugEnumerator; - extern fn ZigLLVMCreateDebugEnumerator( - dib: *DIBuilder, - name: [*:0]const u8, - val: u64, - is_unsigned: bool, - ) *DIEnumerator; - - pub const createEnumerator2 = ZigLLVMCreateDebugEnumeratorOfArbitraryPrecision; - extern fn ZigLLVMCreateDebugEnumeratorOfArbitraryPrecision( - dib: *DIBuilder, - name: [*:0]const u8, - num_words: c_uint, - words: [*]const u64, - bits: c_uint, - is_unsigned: bool, - ) *DIEnumerator; - - pub const createEnumerationType = ZigLLVMCreateDebugEnumerationType; - extern fn ZigLLVMCreateDebugEnumerationType( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - file: *DIFile, - line_number: c_uint, - size_in_bits: u64, - align_in_bits: u64, - enumerator_array: [*]const *DIEnumerator, - enumerator_array_len: c_int, - underlying_type: *DIType, - unique_id: [*:0]const u8, - ) *DIType; - - pub const createStructType = ZigLLVMCreateDebugStructType; - extern fn ZigLLVMCreateDebugStructType( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - file: ?*DIFile, - line_number: c_uint, - size_in_bits: u64, - align_in_bits: u64, - flags: c_uint, - derived_from: ?*DIType, - types_array: [*]const *DIType, - types_array_len: c_int, - run_time_lang: c_uint, - vtable_holder: ?*DIType, - unique_id: [*:0]const u8, - ) *DIType; - - pub const createUnionType = ZigLLVMCreateDebugUnionType; - extern fn ZigLLVMCreateDebugUnionType( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - file: ?*DIFile, - line_number: c_uint, - size_in_bits: u64, - align_in_bits: u64, - flags: c_uint, - types_array: [*]const *DIType, - types_array_len: c_int, - run_time_lang: c_uint, - unique_id: [*:0]const u8, - ) *DIType; - - pub const createMemberType = ZigLLVMCreateDebugMemberType; - extern fn ZigLLVMCreateDebugMemberType( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - file: ?*DIFile, - line: c_uint, - size_in_bits: u64, - align_in_bits: u64, - offset_in_bits: u64, - flags: c_uint, - ty: *DIType, - ) *DIType; - - pub const createReplaceableCompositeType = ZigLLVMCreateReplaceableCompositeType; - extern fn ZigLLVMCreateReplaceableCompositeType( - dib: *DIBuilder, - tag: c_uint, - name: [*:0]const u8, - scope: *DIScope, - file: ?*DIFile, - line: c_uint, - ) *DIType; - - pub const createForwardDeclType = ZigLLVMCreateDebugForwardDeclType; - extern fn ZigLLVMCreateDebugForwardDeclType( - dib: *DIBuilder, - tag: c_uint, - name: [*:0]const u8, - scope: ?*DIScope, - file: ?*DIFile, - line: c_uint, - ) *DIType; - - pub const replaceTemporary = ZigLLVMReplaceTemporary; - extern fn ZigLLVMReplaceTemporary(dib: *DIBuilder, ty: *DIType, replacement: *DIType) void; - - pub const replaceDebugArrays = ZigLLVMReplaceDebugArrays; - extern fn ZigLLVMReplaceDebugArrays( - dib: *DIBuilder, - ty: *DIType, - types_array: [*]const *DIType, - types_array_len: c_int, - ) void; - - pub const createSubroutineType = ZigLLVMCreateSubroutineType; - extern fn ZigLLVMCreateSubroutineType( - dib: *DIBuilder, - types_array: [*]const *DIType, - types_array_len: c_int, - flags: c_uint, - ) *DIType; - - pub const createAutoVariable = ZigLLVMCreateAutoVariable; - extern fn ZigLLVMCreateAutoVariable( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - file: *DIFile, - line_no: c_uint, - ty: *DIType, - always_preserve: bool, - flags: c_uint, - ) *DILocalVariable; - - pub const createGlobalVariableExpression = ZigLLVMCreateGlobalVariableExpression; - extern fn ZigLLVMCreateGlobalVariableExpression( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - linkage_name: [*:0]const u8, - file: *DIFile, - line_no: c_uint, - di_type: *DIType, - is_local_to_unit: bool, - ) *DIGlobalVariableExpression; - - pub const createParameterVariable = ZigLLVMCreateParameterVariable; - extern fn ZigLLVMCreateParameterVariable( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - file: *DIFile, - line_no: c_uint, - ty: *DIType, - always_preserve: bool, - flags: c_uint, - arg_no: c_uint, - ) *DILocalVariable; - - pub const createLexicalBlock = ZigLLVMCreateLexicalBlock; - extern fn ZigLLVMCreateLexicalBlock( - dib: *DIBuilder, - scope: *DIScope, - file: *DIFile, - line: c_uint, - col: c_uint, - ) *DILexicalBlock; - - pub const createCompileUnit = ZigLLVMCreateCompileUnit; - extern fn ZigLLVMCreateCompileUnit( - dib: *DIBuilder, - lang: c_uint, - difile: *DIFile, - producer: [*:0]const u8, - is_optimized: bool, - flags: [*:0]const u8, - runtime_version: c_uint, - split_name: [*:0]const u8, - dwo_id: u64, - emit_debug_info: bool, - ) *DICompileUnit; - - pub const createFile = ZigLLVMCreateFile; - extern fn ZigLLVMCreateFile( - dib: *DIBuilder, - filename: [*:0]const u8, - directory: [*:0]const u8, - ) *DIFile; - - pub const createFunction = ZigLLVMCreateFunction; - extern fn ZigLLVMCreateFunction( - dib: *DIBuilder, - scope: *DIScope, - name: [*:0]const u8, - linkage_name: [*:0]const u8, - file: *DIFile, - lineno: c_uint, - fn_di_type: *DIType, - is_local_to_unit: bool, - is_definition: bool, - scope_line: c_uint, - flags: c_uint, - is_optimized: bool, - decl_subprogram: ?*DISubprogram, - ) *DISubprogram; - - pub const createVectorType = ZigLLVMDIBuilderCreateVectorType; - extern fn ZigLLVMDIBuilderCreateVectorType( - dib: *DIBuilder, - SizeInBits: u64, - AlignInBits: u32, - Ty: *DIType, - elem_count: u32, - ) *DIType; - - pub const insertDeclareAtEnd = ZigLLVMInsertDeclareAtEnd; - extern fn ZigLLVMInsertDeclareAtEnd( - dib: *DIBuilder, - storage: *Value, - var_info: *DILocalVariable, - debug_loc: *DILocation, - basic_block_ref: *BasicBlock, - ) *Value; - - pub const insertDeclare = ZigLLVMInsertDeclare; - extern fn ZigLLVMInsertDeclare( - dib: *DIBuilder, - storage: *Value, - var_info: *DILocalVariable, - debug_loc: *DILocation, - insert_before_instr: *Value, - ) *Value; - - pub const insertDbgValueIntrinsicAtEnd = ZigLLVMInsertDbgValueIntrinsicAtEnd; - extern fn ZigLLVMInsertDbgValueIntrinsicAtEnd( - dib: *DIBuilder, - val: *Value, - var_info: *DILocalVariable, - debug_loc: *DILocation, - basic_block_ref: *BasicBlock, - ) *Value; -}; - -pub const DIFlags = opaque { - pub const Zero = 0; - pub const Private = 1; - pub const Protected = 2; - pub const Public = 3; - - pub const FwdDecl = 1 << 2; - pub const AppleBlock = 1 << 3; - pub const BlockByrefStruct = 1 << 4; - pub const Virtual = 1 << 5; - pub const Artificial = 1 << 6; - pub const Explicit = 1 << 7; - pub const Prototyped = 1 << 8; - pub const ObjcClassComplete = 1 << 9; - pub const ObjectPointer = 1 << 10; - pub const Vector = 1 << 11; - pub const StaticMember = 1 << 12; - pub const LValueReference = 1 << 13; - pub const RValueReference = 1 << 14; - pub const Reserved = 1 << 15; - - pub const SingleInheritance = 1 << 16; - pub const MultipleInheritance = 2 << 16; - pub const VirtualInheritance = 3 << 16; - - pub const IntroducedVirtual = 1 << 18; - pub const BitField = 1 << 19; - pub const NoReturn = 1 << 20; - pub const TypePassByValue = 1 << 22; - pub const TypePassByReference = 1 << 23; - pub const EnumClass = 1 << 24; - pub const Thunk = 1 << 25; - pub const NonTrivial = 1 << 26; - pub const BigEndian = 1 << 27; - pub const LittleEndian = 1 << 28; - pub const AllCallsDescribed = 1 << 29; -}; |
