Commit 713a555aa1

antlilja <liljaanton2001@gmail.com>
2024-02-21 17:54:00
LLVM: Remove unused from llvm/bindings.zig and zig_llvm.h/.cpp
1 parent f6d275b
Changed files (3)
src/codegen/llvm/bindings.zig
@@ -15,7 +15,6 @@ pub const Bool = enum(c_int) {
         return b != .False;
     }
 };
-pub const AttributeIndex = c_uint;
 
 pub const MemoryBuffer = opaque {
     pub const createMemoryBufferWithMemoryRange = LLVMCreateMemoryBufferWithMemoryRange;
@@ -36,382 +35,14 @@ pub const Context = opaque {
     pub const parseBitcodeInContext2 = LLVMParseBitcodeInContext2;
     extern fn LLVMParseBitcodeInContext2(C: *Context, MemBuf: *MemoryBuffer, OutModule: **Module) Bool;
 
-    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 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;
 
@@ -420,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(
@@ -956,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) {
@@ -1002,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,
@@ -1278,541 +395,6 @@ extern fn ZigLLVMWriteImportLibrary(
     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;
src/zig_llvm.cpp
@@ -24,9 +24,7 @@
 #include <llvm/Analysis/TargetLibraryInfo.h>
 #include <llvm/Analysis/TargetTransformInfo.h>
 #include <llvm/Bitcode/BitcodeWriter.h>
-#include <llvm/IR/DIBuilder.h>
 #include <llvm/IR/DiagnosticInfo.h>
-#include <llvm/IR/IRBuilder.h>
 #include <llvm/IR/InlineAsm.h>
 #include <llvm/IR/Instructions.h>
 #include <llvm/IR/LegacyPassManager.h>
@@ -382,566 +380,10 @@ void ZigLLVMSetOptBisectLimit(LLVMContextRef context_ref, int limit) {
     unwrap(context_ref)->setOptPassGate(opt_bisect);
 }
 
-LLVMValueRef ZigLLVMAddFunctionInAddressSpace(LLVMModuleRef M, const char *Name, LLVMTypeRef FunctionTy, unsigned AddressSpace) {
-    Function* func = Function::Create(unwrap<FunctionType>(FunctionTy), GlobalValue::ExternalLinkage, AddressSpace, Name, unwrap(M));
-    return wrap(func);
-}
-
-void ZigLLVMSetTailCallKind(LLVMValueRef Call, enum ZigLLVMTailCallKind TailCallKind) {
-    CallInst::TailCallKind TCK;
-    switch (TailCallKind) {
-        case ZigLLVMTailCallKindNone:
-            TCK = CallInst::TCK_None;
-            break;
-        case ZigLLVMTailCallKindTail:
-            TCK = CallInst::TCK_Tail;
-            break;
-        case ZigLLVMTailCallKindMustTail:
-            TCK = CallInst::TCK_MustTail;
-            break;
-        case ZigLLVMTailCallKindNoTail:
-            TCK = CallInst::TCK_NoTail;
-            break;
-    }
-    unwrap<CallInst>(Call)->setTailCallKind(TCK);
-}
-
-void ZigLLVMFnSetSubprogram(LLVMValueRef fn, ZigLLVMDISubprogram *subprogram) {
-    assert( isa<Function>(unwrap(fn)) );
-    Function *unwrapped_function = reinterpret_cast<Function*>(unwrap(fn));
-    unwrapped_function->setSubprogram(reinterpret_cast<DISubprogram*>(subprogram));
-}
-
-
-ZigLLVMDIType *ZigLLVMCreateDebugPointerType(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIType *pointee_type,
-        uint64_t size_in_bits, uint64_t align_in_bits, const char *name)
-{
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createPointerType(
-            reinterpret_cast<DIType*>(pointee_type), size_in_bits, align_in_bits, std::optional<unsigned>(), name);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugBasicType(ZigLLVMDIBuilder *dibuilder, const char *name,
-        uint64_t size_in_bits, unsigned encoding)
-{
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createBasicType(
-            name, size_in_bits, encoding);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-struct ZigLLVMDIType *ZigLLVMDIBuilderCreateVectorType(struct ZigLLVMDIBuilder *dibuilder,
-        uint64_t SizeInBits, uint32_t AlignInBits, struct ZigLLVMDIType *Ty, uint32_t elem_count)
-{
-    SmallVector<Metadata *, 1> subrange;
-    subrange.push_back(reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateSubrange(0, elem_count));
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createVectorType(
-            SizeInBits,
-            AlignInBits,
-            reinterpret_cast<DIType*>(Ty),
-            reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(subrange));
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugArrayType(ZigLLVMDIBuilder *dibuilder, uint64_t size_in_bits,
-        uint64_t align_in_bits, ZigLLVMDIType *elem_type, int64_t elem_count)
-{
-    SmallVector<Metadata *, 1> subrange;
-    subrange.push_back(reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateSubrange(0, elem_count));
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createArrayType(
-            size_in_bits, align_in_bits,
-            reinterpret_cast<DIType*>(elem_type),
-            reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(subrange));
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIEnumerator *ZigLLVMCreateDebugEnumerator(ZigLLVMDIBuilder *dibuilder, const char *name, uint64_t val, bool isUnsigned) {
-    DIEnumerator *di_enumerator = reinterpret_cast<DIBuilder*>(dibuilder)->createEnumerator(name, val, isUnsigned);
-    return reinterpret_cast<ZigLLVMDIEnumerator*>(di_enumerator);
-}
-
-ZigLLVMDIEnumerator *ZigLLVMCreateDebugEnumeratorOfArbitraryPrecision(ZigLLVMDIBuilder *dibuilder,
-    const char *name, unsigned NumWords, const uint64_t Words[], unsigned int bits, bool isUnsigned)
-{
-    DIEnumerator *di_enumerator = reinterpret_cast<DIBuilder*>(dibuilder)->createEnumerator(name,
-        APSInt(APInt(bits, ArrayRef(Words, NumWords)), isUnsigned));
-    return reinterpret_cast<ZigLLVMDIEnumerator*>(di_enumerator);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugEnumerationType(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIScope *scope,
-        const char *name, ZigLLVMDIFile *file, unsigned line_number, uint64_t size_in_bits,
-        uint64_t align_in_bits, ZigLLVMDIEnumerator **enumerator_array, int enumerator_array_len,
-        ZigLLVMDIType *underlying_type, const char *unique_id)
-{
-    SmallVector<Metadata *, 8> fields;
-    for (int i = 0; i < enumerator_array_len; i += 1) {
-        DIEnumerator *dienumerator = reinterpret_cast<DIEnumerator*>(enumerator_array[i]);
-        fields.push_back(dienumerator);
-    }
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createEnumerationType(
-            reinterpret_cast<DIScope*>(scope),
-            name,
-            reinterpret_cast<DIFile*>(file),
-            line_number, size_in_bits, align_in_bits,
-            reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(fields),
-            reinterpret_cast<DIType*>(underlying_type),
-            unique_id);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugMemberType(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIScope *scope,
-        const char *name, ZigLLVMDIFile *file, unsigned line, uint64_t size_in_bits,
-        uint64_t align_in_bits, uint64_t offset_in_bits, unsigned flags, ZigLLVMDIType *type)
-{
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createMemberType(
-            reinterpret_cast<DIScope*>(scope),
-            name,
-            reinterpret_cast<DIFile*>(file),
-            line, size_in_bits, align_in_bits, offset_in_bits,
-            static_cast<DINode::DIFlags>(flags),
-            reinterpret_cast<DIType*>(type));
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugUnionType(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIScope *scope,
-        const char *name, ZigLLVMDIFile *file, unsigned line_number, uint64_t size_in_bits,
-        uint64_t align_in_bits, unsigned flags, ZigLLVMDIType **types_array, int types_array_len,
-        unsigned run_time_lang, const char *unique_id)
-{
-    SmallVector<Metadata *, 8> fields;
-    for (int i = 0; i < types_array_len; i += 1) {
-        DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
-        fields.push_back(ditype);
-    }
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createUnionType(
-            reinterpret_cast<DIScope*>(scope),
-            name,
-            reinterpret_cast<DIFile*>(file),
-            line_number, size_in_bits, align_in_bits,
-            static_cast<DINode::DIFlags>(flags),
-            reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(fields),
-            run_time_lang, unique_id);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugStructType(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIScope *scope,
-        const char *name, ZigLLVMDIFile *file, unsigned line_number, uint64_t size_in_bits,
-        uint64_t align_in_bits, unsigned flags, ZigLLVMDIType *derived_from,
-        ZigLLVMDIType **types_array, int types_array_len, unsigned run_time_lang, ZigLLVMDIType *vtable_holder,
-        const char *unique_id)
-{
-    SmallVector<Metadata *, 8> fields;
-    for (int i = 0; i < types_array_len; i += 1) {
-        DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
-        fields.push_back(ditype);
-    }
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createStructType(
-            reinterpret_cast<DIScope*>(scope),
-            name,
-            reinterpret_cast<DIFile*>(file),
-            line_number, size_in_bits, align_in_bits,
-            static_cast<DINode::DIFlags>(flags),
-            reinterpret_cast<DIType*>(derived_from),
-            reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(fields),
-            run_time_lang,
-            reinterpret_cast<DIType*>(vtable_holder),
-            unique_id);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateReplaceableCompositeType(ZigLLVMDIBuilder *dibuilder, unsigned tag,
-        const char *name, ZigLLVMDIScope *scope, ZigLLVMDIFile *file, unsigned line)
-{
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createReplaceableCompositeType(
-            tag, name,
-            reinterpret_cast<DIScope*>(scope),
-            reinterpret_cast<DIFile*>(file),
-            line);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-ZigLLVMDIType *ZigLLVMCreateDebugForwardDeclType(ZigLLVMDIBuilder *dibuilder, unsigned tag,
-        const char *name, ZigLLVMDIScope *scope, ZigLLVMDIFile *file, unsigned line)
-{
-    DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createForwardDecl(
-            tag, name,
-            reinterpret_cast<DIScope*>(scope),
-            reinterpret_cast<DIFile*>(file),
-            line);
-    return reinterpret_cast<ZigLLVMDIType*>(di_type);
-}
-
-void ZigLLVMReplaceTemporary(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIType *type,
-        ZigLLVMDIType *replacement)
-{
-    reinterpret_cast<DIBuilder*>(dibuilder)->replaceTemporary(
-            TempDIType(reinterpret_cast<DIType*>(type)),
-            reinterpret_cast<DIType*>(replacement));
-}
-
-void ZigLLVMReplaceDebugArrays(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIType *type,
-        ZigLLVMDIType **types_array, int types_array_len)
-{
-    SmallVector<Metadata *, 8> fields;
-    for (int i = 0; i < types_array_len; i += 1) {
-        DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
-        fields.push_back(ditype);
-    }
-    DICompositeType *composite_type = (DICompositeType*)reinterpret_cast<DIType*>(type);
-    reinterpret_cast<DIBuilder*>(dibuilder)->replaceArrays(
-            composite_type,
-            reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(fields));
-}
-
-ZigLLVMDIType *ZigLLVMCreateSubroutineType(ZigLLVMDIBuilder *dibuilder_wrapped,
-        ZigLLVMDIType **types_array, int types_array_len, unsigned flags)
-{
-    SmallVector<Metadata *, 8> types;
-    for (int i = 0; i < types_array_len; i += 1) {
-        DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
-        types.push_back(ditype);
-    }
-    DIBuilder *dibuilder = reinterpret_cast<DIBuilder*>(dibuilder_wrapped);
-    DISubroutineType *subroutine_type = dibuilder->createSubroutineType(
-            dibuilder->getOrCreateTypeArray(types),
-            static_cast<DINode::DIFlags>(flags));
-    DIType *ditype = subroutine_type;
-    return reinterpret_cast<ZigLLVMDIType*>(ditype);
-}
-
-unsigned ZigLLVMEncoding_DW_ATE_unsigned(void) {
-    return dwarf::DW_ATE_unsigned;
-}
-
-unsigned ZigLLVMEncoding_DW_ATE_signed(void) {
-    return dwarf::DW_ATE_signed;
-}
-
-unsigned ZigLLVMEncoding_DW_ATE_float(void) {
-    return dwarf::DW_ATE_float;
-}
-
-unsigned ZigLLVMEncoding_DW_ATE_boolean(void) {
-    return dwarf::DW_ATE_boolean;
-}
-
-unsigned ZigLLVMEncoding_DW_ATE_unsigned_char(void) {
-    return dwarf::DW_ATE_unsigned_char;
-}
-
-unsigned ZigLLVMEncoding_DW_ATE_signed_char(void) {
-    return dwarf::DW_ATE_signed_char;
-}
-
-unsigned ZigLLVMLang_DW_LANG_C99(void) {
-    return dwarf::DW_LANG_C99;
-}
-
-unsigned ZigLLVMTag_DW_variable(void) {
-    return dwarf::DW_TAG_variable;
-}
-
-unsigned ZigLLVMTag_DW_structure_type(void) {
-    return dwarf::DW_TAG_structure_type;
-}
-
-unsigned ZigLLVMTag_DW_enumeration_type(void) {
-    return dwarf::DW_TAG_enumeration_type;
-}
-
-unsigned ZigLLVMTag_DW_union_type(void) {
-    return dwarf::DW_TAG_union_type;
-}
-
-ZigLLVMDIBuilder *ZigLLVMCreateDIBuilder(LLVMModuleRef module, bool allow_unresolved) {
-    DIBuilder *di_builder = new(std::nothrow) DIBuilder(*unwrap(module), allow_unresolved);
-    if (di_builder == nullptr)
-        return nullptr;
-    return reinterpret_cast<ZigLLVMDIBuilder *>(di_builder);
-}
-
-void ZigLLVMDisposeDIBuilder(ZigLLVMDIBuilder *dbuilder) {
-    DIBuilder *di_builder = reinterpret_cast<DIBuilder *>(dbuilder);
-    delete di_builder;
-}
-
-void ZigLLVMSetCurrentDebugLocation(LLVMBuilderRef builder,
-        unsigned int line, unsigned int column, ZigLLVMDIScope *scope)
-{
-    DIScope* di_scope = reinterpret_cast<DIScope*>(scope);
-    DebugLoc debug_loc = DILocation::get(di_scope->getContext(), line, column, di_scope, nullptr, false);
-    unwrap(builder)->SetCurrentDebugLocation(debug_loc);
-}
-
-void ZigLLVMSetCurrentDebugLocation2(LLVMBuilderRef builder, unsigned int line,
-        unsigned int column, ZigLLVMDIScope *scope, ZigLLVMDILocation *inlined_at)
-{
-    DIScope* di_scope = reinterpret_cast<DIScope*>(scope);
-    DebugLoc debug_loc = DILocation::get(di_scope->getContext(), line, column, di_scope,
-        reinterpret_cast<DILocation *>(inlined_at), false);
-    unwrap(builder)->SetCurrentDebugLocation(debug_loc);
-}
-
-void ZigLLVMClearCurrentDebugLocation(LLVMBuilderRef builder) {
-    unwrap(builder)->SetCurrentDebugLocation(DebugLoc());
-}
-
-
-ZigLLVMDILexicalBlock *ZigLLVMCreateLexicalBlock(ZigLLVMDIBuilder *dbuilder, ZigLLVMDIScope *scope,
-        ZigLLVMDIFile *file, unsigned line, unsigned col)
-{
-    DILexicalBlock *result = reinterpret_cast<DIBuilder*>(dbuilder)->createLexicalBlock(
-            reinterpret_cast<DIScope*>(scope),
-            reinterpret_cast<DIFile*>(file),
-            line,
-            col);
-    return reinterpret_cast<ZigLLVMDILexicalBlock*>(result);
-}
-
-ZigLLVMDILocalVariable *ZigLLVMCreateAutoVariable(ZigLLVMDIBuilder *dbuilder,
-        ZigLLVMDIScope *scope, const char *name, ZigLLVMDIFile *file, unsigned line_no,
-        ZigLLVMDIType *type, bool always_preserve, unsigned flags)
-{
-    DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createAutoVariable(
-            reinterpret_cast<DIScope*>(scope),
-            name,
-            reinterpret_cast<DIFile*>(file),
-            line_no,
-            reinterpret_cast<DIType*>(type),
-            always_preserve,
-            static_cast<DINode::DIFlags>(flags));
-    return reinterpret_cast<ZigLLVMDILocalVariable*>(result);
-}
-
-ZigLLVMDIGlobalVariableExpression *ZigLLVMCreateGlobalVariableExpression(ZigLLVMDIBuilder *dbuilder,
-    ZigLLVMDIScope *scope, const char *name, const char *linkage_name, ZigLLVMDIFile *file,
-    unsigned line_no, ZigLLVMDIType *di_type, bool is_local_to_unit)
-{
-    return reinterpret_cast<ZigLLVMDIGlobalVariableExpression*>(reinterpret_cast<DIBuilder*>(dbuilder)->createGlobalVariableExpression(
-        reinterpret_cast<DIScope*>(scope),
-        name,
-        linkage_name,
-        reinterpret_cast<DIFile*>(file),
-        line_no,
-        reinterpret_cast<DIType*>(di_type),
-        is_local_to_unit));
-}
-
-ZigLLVMDILocalVariable *ZigLLVMCreateParameterVariable(ZigLLVMDIBuilder *dbuilder,
-        ZigLLVMDIScope *scope, const char *name, ZigLLVMDIFile *file, unsigned line_no,
-        ZigLLVMDIType *type, bool always_preserve, unsigned flags, unsigned arg_no)
-{
-    assert(arg_no != 0);
-    DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createParameterVariable(
-            reinterpret_cast<DIScope*>(scope),
-            name,
-            arg_no,
-            reinterpret_cast<DIFile*>(file),
-            line_no,
-            reinterpret_cast<DIType*>(type),
-            always_preserve,
-            static_cast<DINode::DIFlags>(flags));
-    return reinterpret_cast<ZigLLVMDILocalVariable*>(result);
-}
-
-ZigLLVMDIScope *ZigLLVMLexicalBlockToScope(ZigLLVMDILexicalBlock *lexical_block) {
-    DIScope *scope = reinterpret_cast<DILexicalBlock*>(lexical_block);
-    return reinterpret_cast<ZigLLVMDIScope*>(scope);
-}
-
-ZigLLVMDIScope *ZigLLVMCompileUnitToScope(ZigLLVMDICompileUnit *compile_unit) {
-    DIScope *scope = reinterpret_cast<DICompileUnit*>(compile_unit);
-    return reinterpret_cast<ZigLLVMDIScope*>(scope);
-}
-
-ZigLLVMDIScope *ZigLLVMFileToScope(ZigLLVMDIFile *difile) {
-    DIScope *scope = reinterpret_cast<DIFile*>(difile);
-    return reinterpret_cast<ZigLLVMDIScope*>(scope);
-}
-
-ZigLLVMDIScope *ZigLLVMSubprogramToScope(ZigLLVMDISubprogram *subprogram) {
-    DIScope *scope = reinterpret_cast<DISubprogram*>(subprogram);
-    return reinterpret_cast<ZigLLVMDIScope*>(scope);
-}
-
-ZigLLVMDIScope *ZigLLVMTypeToScope(ZigLLVMDIType *type) {
-    DIScope *scope = reinterpret_cast<DIType*>(type);
-    return reinterpret_cast<ZigLLVMDIScope*>(scope);
-}
-
-ZigLLVMDINode *ZigLLVMLexicalBlockToNode(ZigLLVMDILexicalBlock *lexical_block) {
-    DINode *node = reinterpret_cast<DILexicalBlock*>(lexical_block);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-ZigLLVMDINode *ZigLLVMCompileUnitToNode(ZigLLVMDICompileUnit *compile_unit) {
-    DINode *node = reinterpret_cast<DICompileUnit*>(compile_unit);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-ZigLLVMDINode *ZigLLVMFileToNode(ZigLLVMDIFile *difile) {
-    DINode *node = reinterpret_cast<DIFile*>(difile);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-ZigLLVMDINode *ZigLLVMSubprogramToNode(ZigLLVMDISubprogram *subprogram) {
-    DINode *node = reinterpret_cast<DISubprogram*>(subprogram);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-ZigLLVMDINode *ZigLLVMTypeToNode(ZigLLVMDIType *type) {
-    DINode *node = reinterpret_cast<DIType*>(type);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-ZigLLVMDINode *ZigLLVMScopeToNode(ZigLLVMDIScope *scope) {
-    DINode *node = reinterpret_cast<DIScope*>(scope);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-ZigLLVMDINode *ZigLLVMGlobalVariableToNode(ZigLLVMDIGlobalVariable *global_variable) {
-    DINode *node = reinterpret_cast<DIGlobalVariable*>(global_variable);
-    return reinterpret_cast<ZigLLVMDINode*>(node);
-}
-
-void ZigLLVMSubprogramReplaceLinkageName(ZigLLVMDISubprogram *subprogram,
-        ZigLLVMMDString *linkage_name)
-{
-    MDString *linkage_name_md = reinterpret_cast<MDString*>(linkage_name);
-    reinterpret_cast<DISubprogram*>(subprogram)->replaceLinkageName(linkage_name_md);
-}
-
-void ZigLLVMGlobalVariableReplaceLinkageName(ZigLLVMDIGlobalVariable *global_variable,
-        ZigLLVMMDString *linkage_name)
-{
-    Metadata *linkage_name_md = reinterpret_cast<MDString*>(linkage_name);
-    // NOTE: Operand index must match llvm::DIGlobalVariable
-    reinterpret_cast<DIGlobalVariable*>(global_variable)->replaceOperandWith(5, linkage_name_md);
-}
-
-ZigLLVMDICompileUnit *ZigLLVMCreateCompileUnit(ZigLLVMDIBuilder *dibuilder,
-        unsigned lang, ZigLLVMDIFile *difile, const char *producer,
-        bool is_optimized, const char *flags, unsigned runtime_version, const char *split_name,
-        uint64_t dwo_id, bool emit_debug_info)
-{
-    DICompileUnit *result = reinterpret_cast<DIBuilder*>(dibuilder)->createCompileUnit(
-            lang,
-            reinterpret_cast<DIFile*>(difile),
-            producer, is_optimized, flags, runtime_version, split_name,
-            (emit_debug_info ? DICompileUnit::DebugEmissionKind::FullDebug : DICompileUnit::DebugEmissionKind::NoDebug),
-            dwo_id);
-    return reinterpret_cast<ZigLLVMDICompileUnit*>(result);
-}
-
-
-ZigLLVMDIFile *ZigLLVMCreateFile(ZigLLVMDIBuilder *dibuilder, const char *filename, const char *directory) {
-    DIFile *result = reinterpret_cast<DIBuilder*>(dibuilder)->createFile(filename, directory);
-    return reinterpret_cast<ZigLLVMDIFile*>(result);
-}
-
-ZigLLVMDISubprogram *ZigLLVMCreateFunction(ZigLLVMDIBuilder *dibuilder, ZigLLVMDIScope *scope,
-        const char *name, const char *linkage_name, ZigLLVMDIFile *file, unsigned lineno,
-        ZigLLVMDIType *fn_di_type, bool is_local_to_unit, bool is_definition, unsigned scope_line,
-        unsigned flags, bool is_optimized, ZigLLVMDISubprogram *decl_subprogram)
-{
-    DISubroutineType *di_sub_type = static_cast<DISubroutineType*>(reinterpret_cast<DIType*>(fn_di_type));
-    DISubprogram *result = reinterpret_cast<DIBuilder*>(dibuilder)->createFunction(
-            reinterpret_cast<DIScope*>(scope),
-            name, linkage_name,
-            reinterpret_cast<DIFile*>(file),
-            lineno,
-            di_sub_type,
-            scope_line,
-            static_cast<DINode::DIFlags>(flags),
-            DISubprogram::toSPFlags(is_local_to_unit, is_definition, is_optimized),
-            nullptr,
-            reinterpret_cast<DISubprogram *>(decl_subprogram),
-            nullptr);
-    return reinterpret_cast<ZigLLVMDISubprogram*>(result);
-}
-
-void ZigLLVMDIBuilderFinalize(ZigLLVMDIBuilder *dibuilder) {
-    reinterpret_cast<DIBuilder*>(dibuilder)->finalize();
-}
-
-LLVMValueRef ZigLLVMInsertDeclareAtEnd(ZigLLVMDIBuilder *dibuilder, LLVMValueRef storage,
-        ZigLLVMDILocalVariable *var_info, ZigLLVMDILocation *debug_loc, LLVMBasicBlockRef basic_block_ref)
-{
-    Instruction *result = reinterpret_cast<DIBuilder*>(dibuilder)->insertDeclare(
-            unwrap(storage),
-            reinterpret_cast<DILocalVariable *>(var_info),
-            reinterpret_cast<DIBuilder*>(dibuilder)->createExpression(),
-            reinterpret_cast<DILocation*>(debug_loc),
-            static_cast<BasicBlock*>(unwrap(basic_block_ref)));
-    return wrap(result);
-}
-
-LLVMValueRef ZigLLVMInsertDbgValueIntrinsicAtEnd(ZigLLVMDIBuilder *dib, LLVMValueRef val,
-        ZigLLVMDILocalVariable *var_info, ZigLLVMDILocation *debug_loc,
-        LLVMBasicBlockRef basic_block_ref)
-{
-    Instruction *result = reinterpret_cast<DIBuilder*>(dib)->insertDbgValueIntrinsic(
-            unwrap(val),
-            reinterpret_cast<DILocalVariable *>(var_info),
-            reinterpret_cast<DIBuilder*>(dib)->createExpression(),
-            reinterpret_cast<DILocation*>(debug_loc),
-            static_cast<BasicBlock*>(unwrap(basic_block_ref)));
-    return wrap(result);
-}
-
-LLVMValueRef ZigLLVMInsertDeclare(ZigLLVMDIBuilder *dibuilder, LLVMValueRef storage,
-        ZigLLVMDILocalVariable *var_info, ZigLLVMDILocation *debug_loc, LLVMValueRef insert_before_instr)
-{
-    Instruction *result = reinterpret_cast<DIBuilder*>(dibuilder)->insertDeclare(
-            unwrap(storage),
-            reinterpret_cast<DILocalVariable *>(var_info),
-            reinterpret_cast<DIBuilder*>(dibuilder)->createExpression(),
-            reinterpret_cast<DILocation*>(debug_loc),
-            static_cast<Instruction*>(unwrap(insert_before_instr)));
-    return wrap(result);
-}
-
-ZigLLVMDILocation *ZigLLVMGetDebugLoc(unsigned line, unsigned col, ZigLLVMDIScope *scope) {
-    DIScope* di_scope = reinterpret_cast<DIScope*>(scope);
-    DebugLoc debug_loc = DILocation::get(di_scope->getContext(), line, col, di_scope, nullptr, false);
-    return reinterpret_cast<ZigLLVMDILocation*>(debug_loc.get());
-}
-
-ZigLLVMDILocation *ZigLLVMGetDebugLoc2(unsigned line, unsigned col, ZigLLVMDIScope *scope,
-        ZigLLVMDILocation *inlined_at) {
-    DIScope* di_scope = reinterpret_cast<DIScope*>(scope);
-    DebugLoc debug_loc = DILocation::get(di_scope->getContext(), line, col, di_scope,
-        reinterpret_cast<DILocation *>(inlined_at), false);
-    return reinterpret_cast<ZigLLVMDILocation*>(debug_loc.get());
-}
-
-void ZigLLVMSetFastMath(LLVMBuilderRef builder_wrapped, bool on_state) {
-    if (on_state) {
-        FastMathFlags fmf;
-        fmf.setFast();
-        unwrap(builder_wrapped)->setFastMathFlags(fmf);
-    } else {
-        unwrap(builder_wrapped)->clearFastMathFlags();
-    }
-}
-
 void ZigLLVMParseCommandLineOptions(size_t argc, const char *const *argv) {
     cl::ParseCommandLineOptions(argc, argv);
 }
 
-void ZigLLVMAddModuleDebugInfoFlag(LLVMModuleRef module, bool produce_dwarf64) {
-    unwrap(module)->addModuleFlag(Module::Warning, "Debug Info Version", DEBUG_METADATA_VERSION);
-    unwrap(module)->addModuleFlag(Module::Warning, "Dwarf Version", 4);
-
-    if (produce_dwarf64) {
-        unwrap(module)->addModuleFlag(Module::Warning, "DWARF64", 1);
-    }
-}
-
-void ZigLLVMAddModuleCodeViewFlag(LLVMModuleRef module) {
-    unwrap(module)->addModuleFlag(Module::Warning, "Debug Info Version", DEBUG_METADATA_VERSION);
-    unwrap(module)->addModuleFlag(Module::Warning, "CodeView", 1);
-}
-
 void ZigLLVMSetModulePICLevel(LLVMModuleRef module) {
     unwrap(module)->setPICLevel(PICLevel::Level::BigPIC);
 }
@@ -956,35 +398,6 @@ void ZigLLVMSetModuleCodeModel(LLVMModuleRef module, LLVMCodeModel code_model) {
     assert(!JIT);
 }
 
-LLVMValueRef ZigLLVMBuildNSWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name)
-{
-    return wrap(unwrap(builder)->CreateShl(unwrap(LHS), unwrap(RHS), name, false, true));
-}
-
-LLVMValueRef ZigLLVMBuildNUWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name)
-{
-    return wrap(unwrap(builder)->CreateShl(unwrap(LHS), unwrap(RHS), name, true, false));
-}
-
-LLVMValueRef ZigLLVMBuildLShrExact(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name)
-{
-    return wrap(unwrap(builder)->CreateLShr(unwrap(LHS), unwrap(RHS), name, true));
-}
-
-LLVMValueRef ZigLLVMBuildAShrExact(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name)
-{
-    return wrap(unwrap(builder)->CreateAShr(unwrap(LHS), unwrap(RHS), name, true));
-}
-
-LLVMValueRef ZigLLVMBuildAllocaInAddressSpace(LLVMBuilderRef builder, LLVMTypeRef Ty,
-        unsigned AddressSpace, const char *Name) {
-  return wrap(unwrap(builder)->CreateAlloca(unwrap(Ty), AddressSpace, nullptr, Name));
-}
-
 bool ZigLLVMWriteImportLibrary(const char *def_path, const ZigLLVM_ArchType arch,
                                const char *output_lib_path, bool kill_at)
 {
@@ -1134,43 +547,6 @@ bool ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disab
     return lld::wasm::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);
 }
 
-void ZigLLVMTakeName(LLVMValueRef new_owner, LLVMValueRef victim) {
-    unwrap(new_owner)->takeName(unwrap(victim));
-}
-
-void ZigLLVMRemoveGlobalValue(LLVMValueRef GlobalVal) {
-    unwrap<GlobalValue>(GlobalVal)->removeFromParent();
-}
-
-void ZigLLVMEraseGlobalValue(LLVMValueRef GlobalVal) {
-    unwrap<GlobalValue>(GlobalVal)->eraseFromParent();
-}
-
-void ZigLLVMDeleteGlobalValue(LLVMValueRef GlobalVal) {
-    auto *GV = unwrap<GlobalValue>(GlobalVal);
-    assert(GV->getParent() == nullptr);
-    switch (GV->getValueID()) {
-#define HANDLE_GLOBAL_VALUE(NAME) \
-        case Value::NAME##Val: \
-            delete static_cast<NAME *>(GV); \
-            break;
-#include <llvm/IR/Value.def>
-        default: llvm_unreachable("Expected global value");
-    }
-}
-
-void ZigLLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal) {
-    unwrap<GlobalVariable>(GlobalVar)->setInitializer(ConstantVal ? unwrap<Constant>(ConstantVal) : nullptr);
-}
-
-ZigLLVMDIGlobalVariable* ZigLLVMGlobalGetVariable(ZigLLVMDIGlobalVariableExpression *global_variable_expression) {
-    return reinterpret_cast<ZigLLVMDIGlobalVariable*>(reinterpret_cast<DIGlobalVariableExpression*>(global_variable_expression)->getVariable());
-}
-
-void ZigLLVMAttachMetaData(LLVMValueRef Val, ZigLLVMDIGlobalVariableExpression *global_variable_expression) {
-    unwrap<GlobalVariable>(Val)->addDebugInfo(reinterpret_cast<DIGlobalVariableExpression*>(global_variable_expression));
-}
-
 static_assert((Triple::ArchType)ZigLLVM_UnknownArch == Triple::UnknownArch, "");
 static_assert((Triple::ArchType)ZigLLVM_arm == Triple::arm, "");
 static_assert((Triple::ArchType)ZigLLVM_armeb == Triple::armeb, "");
src/zig_llvm.h
@@ -24,24 +24,6 @@
 // ATTENTION: If you modify this file, be sure to update the corresponding
 // extern function declarations in the self-hosted compiler.
 
-struct ZigLLVMDIType;
-struct ZigLLVMDIBuilder;
-struct ZigLLVMDICompileUnit;
-struct ZigLLVMDIScope;
-struct ZigLLVMDIFile;
-struct ZigLLVMDILexicalBlock;
-struct ZigLLVMDISubprogram;
-struct ZigLLVMDISubroutineType;
-struct ZigLLVMDILocalVariable;
-struct ZigLLVMDIGlobalVariableExpression;
-struct ZigLLVMDIGlobalVariable;
-struct ZigLLVMDIGlobalExpression;
-struct ZigLLVMDILocation;
-struct ZigLLVMDIEnumerator;
-struct ZigLLVMInsertionPoint;
-struct ZigLLVMDINode;
-struct ZigLLVMMDString;
-
 ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref,
         char **error_message, bool is_debug,
         bool is_small, bool time_report, bool tsan, bool lto,
@@ -62,9 +44,6 @@ ZIG_EXTERN_C LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, co
 
 ZIG_EXTERN_C void ZigLLVMSetOptBisectLimit(LLVMContextRef context_ref, int limit);
 
-ZIG_EXTERN_C LLVMValueRef ZigLLVMAddFunctionInAddressSpace(LLVMModuleRef M, const char *Name,
-        LLVMTypeRef FunctionTy, unsigned AddressSpace);
-
 enum ZigLLVMTailCallKind {
     ZigLLVMTailCallKindNone,
     ZigLLVMTailCallKindTail,
@@ -72,8 +51,6 @@ enum ZigLLVMTailCallKind {
     ZigLLVMTailCallKindNoTail,
 };
 
-ZIG_EXTERN_C void ZigLLVMSetTailCallKind(LLVMValueRef Call, enum ZigLLVMTailCallKind TailCallKind);
-
 enum ZigLLVM_CallingConv {
     ZigLLVM_C = 0,
     ZigLLVM_Fast = 8,
@@ -122,176 +99,12 @@ enum ZigLLVM_CallingConv {
     ZigLLVM_MaxID = 1023,
 };
 
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildNSWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name);
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildNUWShl(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name);
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildLShrExact(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name);
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildAShrExact(LLVMBuilderRef builder, LLVMValueRef LHS, LLVMValueRef RHS,
-        const char *name);
-
-ZIG_EXTERN_C LLVMValueRef ZigLLVMBuildAllocaInAddressSpace(LLVMBuilderRef builder, LLVMTypeRef Ty, unsigned AddressSpace,
-        const char *Name);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugPointerType(struct ZigLLVMDIBuilder *dibuilder,
-        struct ZigLLVMDIType *pointee_type, uint64_t size_in_bits, uint64_t align_in_bits, const char *name);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugBasicType(struct ZigLLVMDIBuilder *dibuilder, const char *name,
-        uint64_t size_in_bits, unsigned encoding);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugArrayType(struct ZigLLVMDIBuilder *dibuilder,
-        uint64_t size_in_bits, uint64_t align_in_bits, struct ZigLLVMDIType *elem_type,
-        int64_t elem_count);
-
-ZIG_EXTERN_C struct ZigLLVMDIEnumerator *ZigLLVMCreateDebugEnumerator(struct ZigLLVMDIBuilder *dibuilder,
-        const char *name, uint64_t val, bool isUnsigned);
-
-
-ZIG_EXTERN_C struct ZigLLVMDIEnumerator *ZigLLVMCreateDebugEnumeratorOfArbitraryPrecision(struct ZigLLVMDIBuilder *dibuilder,
-        const char *name, unsigned NumWords, const uint64_t Words[], unsigned int bits, bool isUnsigned);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugEnumerationType(struct ZigLLVMDIBuilder *dibuilder,
-        struct ZigLLVMDIScope *scope, const char *name, struct ZigLLVMDIFile *file, unsigned line_number,
-        uint64_t size_in_bits, uint64_t align_in_bits, struct ZigLLVMDIEnumerator **enumerator_array,
-        int enumerator_array_len, struct ZigLLVMDIType *underlying_type, const char *unique_id);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugStructType(struct ZigLLVMDIBuilder *dibuilder,
-        struct ZigLLVMDIScope *scope, const char *name, struct ZigLLVMDIFile *file, unsigned line_number,
-        uint64_t size_in_bits, uint64_t align_in_bits, unsigned flags, struct ZigLLVMDIType *derived_from,
-        struct ZigLLVMDIType **types_array, int types_array_len, unsigned run_time_lang,
-        struct ZigLLVMDIType *vtable_holder, const char *unique_id);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugUnionType(struct ZigLLVMDIBuilder *dibuilder,
-        struct ZigLLVMDIScope *scope, const char *name, struct ZigLLVMDIFile *file, unsigned line_number,
-        uint64_t size_in_bits, uint64_t align_in_bits, unsigned flags, struct ZigLLVMDIType **types_array,
-        int types_array_len, unsigned run_time_lang, const char *unique_id);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugMemberType(struct ZigLLVMDIBuilder *dibuilder,
-        struct ZigLLVMDIScope *scope, const char *name, struct ZigLLVMDIFile *file, unsigned line,
-        uint64_t size_in_bits, uint64_t align_in_bits, uint64_t offset_in_bits, unsigned flags,
-        struct ZigLLVMDIType *type);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateReplaceableCompositeType(struct ZigLLVMDIBuilder *dibuilder,
-        unsigned tag, const char *name, struct ZigLLVMDIScope *scope, struct ZigLLVMDIFile *file, unsigned line);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateDebugForwardDeclType(struct ZigLLVMDIBuilder *dibuilder, unsigned tag,
-        const char *name, struct ZigLLVMDIScope *scope, struct ZigLLVMDIFile *file, unsigned line);
-
-ZIG_EXTERN_C void ZigLLVMReplaceTemporary(struct ZigLLVMDIBuilder *dibuilder, struct ZigLLVMDIType *type,
-        struct ZigLLVMDIType *replacement);
-
-ZIG_EXTERN_C void ZigLLVMReplaceDebugArrays(struct ZigLLVMDIBuilder *dibuilder, struct ZigLLVMDIType *type,
-        struct ZigLLVMDIType **types_array, int types_array_len);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMCreateSubroutineType(struct ZigLLVMDIBuilder *dibuilder_wrapped,
-        struct ZigLLVMDIType **types_array, int types_array_len, unsigned flags);
-
-ZIG_EXTERN_C unsigned ZigLLVMEncoding_DW_ATE_unsigned(void);
-ZIG_EXTERN_C unsigned ZigLLVMEncoding_DW_ATE_signed(void);
-ZIG_EXTERN_C unsigned ZigLLVMEncoding_DW_ATE_float(void);
-ZIG_EXTERN_C unsigned ZigLLVMEncoding_DW_ATE_boolean(void);
-ZIG_EXTERN_C unsigned ZigLLVMEncoding_DW_ATE_unsigned_char(void);
-ZIG_EXTERN_C unsigned ZigLLVMEncoding_DW_ATE_signed_char(void);
-ZIG_EXTERN_C unsigned ZigLLVMLang_DW_LANG_C99(void);
-ZIG_EXTERN_C unsigned ZigLLVMTag_DW_variable(void);
-ZIG_EXTERN_C unsigned ZigLLVMTag_DW_structure_type(void);
-ZIG_EXTERN_C unsigned ZigLLVMTag_DW_enumeration_type(void);
-ZIG_EXTERN_C unsigned ZigLLVMTag_DW_union_type(void);
-
-ZIG_EXTERN_C struct ZigLLVMDIBuilder *ZigLLVMCreateDIBuilder(LLVMModuleRef module, bool allow_unresolved);
-ZIG_EXTERN_C void ZigLLVMDisposeDIBuilder(struct ZigLLVMDIBuilder *dbuilder);
-ZIG_EXTERN_C void ZigLLVMAddModuleDebugInfoFlag(LLVMModuleRef module, bool produce_dwarf64);
-ZIG_EXTERN_C void ZigLLVMAddModuleCodeViewFlag(LLVMModuleRef module);
 ZIG_EXTERN_C void ZigLLVMSetModulePICLevel(LLVMModuleRef module);
 ZIG_EXTERN_C void ZigLLVMSetModulePIELevel(LLVMModuleRef module);
 ZIG_EXTERN_C void ZigLLVMSetModuleCodeModel(LLVMModuleRef module, LLVMCodeModel code_model);
 
-ZIG_EXTERN_C void ZigLLVMSetCurrentDebugLocation(LLVMBuilderRef builder,
-        unsigned int line, unsigned int column, struct ZigLLVMDIScope *scope);
-ZIG_EXTERN_C void ZigLLVMSetCurrentDebugLocation2(LLVMBuilderRef builder, unsigned int line,
-        unsigned int column, struct ZigLLVMDIScope *scope, struct ZigLLVMDILocation *inlined_at);
-ZIG_EXTERN_C void ZigLLVMClearCurrentDebugLocation(LLVMBuilderRef builder);
-
-ZIG_EXTERN_C struct ZigLLVMDIScope *ZigLLVMLexicalBlockToScope(struct ZigLLVMDILexicalBlock *lexical_block);
-ZIG_EXTERN_C struct ZigLLVMDIScope *ZigLLVMCompileUnitToScope(struct ZigLLVMDICompileUnit *compile_unit);
-ZIG_EXTERN_C struct ZigLLVMDIScope *ZigLLVMFileToScope(struct ZigLLVMDIFile *difile);
-ZIG_EXTERN_C struct ZigLLVMDIScope *ZigLLVMSubprogramToScope(struct ZigLLVMDISubprogram *subprogram);
-ZIG_EXTERN_C struct ZigLLVMDIScope *ZigLLVMTypeToScope(struct ZigLLVMDIType *type);
-
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMLexicalBlockToNode(struct ZigLLVMDILexicalBlock *lexical_block);
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMCompileUnitToNode(struct ZigLLVMDICompileUnit *compile_unit);
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMFileToNode(struct ZigLLVMDIFile *difile);
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMSubprogramToNode(struct ZigLLVMDISubprogram *subprogram);
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMTypeToNode(struct ZigLLVMDIType *type);
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMScopeToNode(struct ZigLLVMDIScope *scope);
-ZIG_EXTERN_C struct ZigLLVMDINode *ZigLLVMGlobalVariableToNode(struct ZigLLVMDIGlobalVariable *global_variable);
-
-ZIG_EXTERN_C void ZigLLVMSubprogramReplaceLinkageName(struct ZigLLVMDISubprogram *subprogram,
-        struct ZigLLVMMDString *linkage_name);
-ZIG_EXTERN_C void ZigLLVMGlobalVariableReplaceLinkageName(struct ZigLLVMDIGlobalVariable *global_variable,
-        struct ZigLLVMMDString *linkage_name);
-
-ZIG_EXTERN_C struct ZigLLVMDILocalVariable *ZigLLVMCreateAutoVariable(struct ZigLLVMDIBuilder *dbuilder,
-        struct ZigLLVMDIScope *scope, const char *name, struct ZigLLVMDIFile *file, unsigned line_no,
-        struct ZigLLVMDIType *type, bool always_preserve, unsigned flags);
-
-ZIG_EXTERN_C struct ZigLLVMDIGlobalVariableExpression *ZigLLVMCreateGlobalVariableExpression(struct ZigLLVMDIBuilder *dbuilder,
-    struct ZigLLVMDIScope *scope, const char *name, const char *linkage_name, struct ZigLLVMDIFile *file,
-    unsigned line_no, struct ZigLLVMDIType *di_type, bool is_local_to_unit);
-
-ZIG_EXTERN_C struct ZigLLVMDILocalVariable *ZigLLVMCreateParameterVariable(struct ZigLLVMDIBuilder *dbuilder,
-        struct ZigLLVMDIScope *scope, const char *name, struct ZigLLVMDIFile *file, unsigned line_no,
-        struct ZigLLVMDIType *type, bool always_preserve, unsigned flags, unsigned arg_no);
-
-ZIG_EXTERN_C struct ZigLLVMDILexicalBlock *ZigLLVMCreateLexicalBlock(struct ZigLLVMDIBuilder *dbuilder,
-        struct ZigLLVMDIScope *scope, struct ZigLLVMDIFile *file, unsigned line, unsigned col);
-
-ZIG_EXTERN_C struct ZigLLVMDICompileUnit *ZigLLVMCreateCompileUnit(struct ZigLLVMDIBuilder *dibuilder,
-        unsigned lang, struct ZigLLVMDIFile *difile, const char *producer,
-        bool is_optimized, const char *flags, unsigned runtime_version, const char *split_name,
-        uint64_t dwo_id, bool emit_debug_info);
-
-ZIG_EXTERN_C struct ZigLLVMDIFile *ZigLLVMCreateFile(struct ZigLLVMDIBuilder *dibuilder, const char *filename,
-        const char *directory);
-
-ZIG_EXTERN_C struct ZigLLVMDISubprogram *ZigLLVMCreateFunction(struct ZigLLVMDIBuilder *dibuilder,
-        struct ZigLLVMDIScope *scope, const char *name, const char *linkage_name, struct ZigLLVMDIFile *file,
-        unsigned lineno, struct ZigLLVMDIType *fn_di_type, bool is_local_to_unit, bool is_definition,
-        unsigned scope_line, unsigned flags, bool is_optimized, struct ZigLLVMDISubprogram *decl_subprogram);
-
-ZIG_EXTERN_C struct ZigLLVMDIType *ZigLLVMDIBuilderCreateVectorType(struct ZigLLVMDIBuilder *dibuilder,
-        uint64_t SizeInBits, uint32_t AlignInBits, struct ZigLLVMDIType *Ty, uint32_t elem_count);
-
-ZIG_EXTERN_C void ZigLLVMFnSetSubprogram(LLVMValueRef fn, struct ZigLLVMDISubprogram *subprogram);
-
-ZIG_EXTERN_C void ZigLLVMDIBuilderFinalize(struct ZigLLVMDIBuilder *dibuilder);
-
-ZIG_EXTERN_C struct ZigLLVMDILocation *ZigLLVMGetDebugLoc(unsigned line, unsigned col,
-        struct ZigLLVMDIScope *scope);
-ZIG_EXTERN_C struct ZigLLVMDILocation *ZigLLVMGetDebugLoc2(unsigned line, unsigned col,
-        struct ZigLLVMDIScope *scope, struct ZigLLVMDILocation *inlined_at);
-
-ZIG_EXTERN_C LLVMValueRef ZigLLVMInsertDeclareAtEnd(struct ZigLLVMDIBuilder *dib,
-        LLVMValueRef storage, struct ZigLLVMDILocalVariable *var_info,
-        struct ZigLLVMDILocation *debug_loc, LLVMBasicBlockRef basic_block_ref);
-
-ZIG_EXTERN_C LLVMValueRef ZigLLVMInsertDeclare(struct ZigLLVMDIBuilder *dib,
-        LLVMValueRef storage, struct ZigLLVMDILocalVariable *var_info,
-        struct ZigLLVMDILocation *debug_loc, LLVMValueRef insert_before_instr);
-
-ZIG_EXTERN_C LLVMValueRef ZigLLVMInsertDbgValueIntrinsicAtEnd(struct ZigLLVMDIBuilder *dib,
-        LLVMValueRef val, struct ZigLLVMDILocalVariable *var_info,
-        struct ZigLLVMDILocation *debug_loc, LLVMBasicBlockRef basic_block_ref);
-
-ZIG_EXTERN_C void ZigLLVMSetFastMath(LLVMBuilderRef builder_wrapped, bool on_state);
-
 ZIG_EXTERN_C void ZigLLVMParseCommandLineOptions(size_t argc, const char *const *argv);
 
-ZIG_EXTERN_C ZigLLVMDIGlobalVariable* ZigLLVMGlobalGetVariable(ZigLLVMDIGlobalVariableExpression *global_variable_expression);
-ZIG_EXTERN_C void ZigLLVMAttachMetaData(LLVMValueRef Val, ZigLLVMDIGlobalVariableExpression *global_variable_expression);
-
-
 // synchronize with llvm/include/ADT/Triple.h::ArchType
 // synchronize with std.Target.Cpu.Arch
 // synchronize with codegen/llvm/bindings.zig::ArchType
@@ -494,12 +307,6 @@ enum ZigLLVM_ObjectFormatType {
     ZigLLVM_XCOFF,
 };
 
-ZIG_EXTERN_C void ZigLLVMTakeName(LLVMValueRef new_owner, LLVMValueRef victim);
-ZIG_EXTERN_C void ZigLLVMRemoveGlobalValue(LLVMValueRef GlobalVal);
-ZIG_EXTERN_C void ZigLLVMEraseGlobalValue(LLVMValueRef GlobalVal);
-ZIG_EXTERN_C void ZigLLVMDeleteGlobalValue(LLVMValueRef GlobalVal);
-ZIG_EXTERN_C void ZigLLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal);
-
 #define ZigLLVM_DIFlags_Zero 0U
 #define ZigLLVM_DIFlags_Private 1U
 #define ZigLLVM_DIFlags_Protected 2U