# HG changeset patch # User dan amlund # Date 1216765871 -7200 # Node ID cbebde9ba2c82dc88295b5bc8e3756becb155c27 # Parent 9cfa335175263838086a7cfbb67704fe71790289 proper patch for llvm bindings diff -r 9cfa33517526 -r cbebde9ba2c8 llvm.patch --- a/llvm.patch Tue Jul 22 21:34:53 2008 +0200 +++ b/llvm.patch Wed Jul 23 00:31:11 2008 +0200 @@ -1,48 +1,7 @@ -Index: llvm/c/Core.d -=================================================================== ---- llvm/c/Core.d (revision 170) -+++ llvm/c/Core.d (working copy) -@@ -82,6 +82,20 @@ - */ - typedef LLVM_OpaqueMemoryBuffer* LLVMMemoryBufferRef; - -+enum LLVMParamAttr { -+ ZExt = 1<<0, -+ SExt = 1<<1, -+ NoReturn = 1<<2, -+ InReg = 1<<3, -+ StructRet = 1<<4, -+ NoUnwind = 1<<5, -+ NoAlias = 1<<6, -+ ByVal = 1<<7, -+ Nest = 1<<8, -+ ReadNone = 1<<9, -+ ReadOnly = 1<<10 -+} -+ - enum LLVMTypeKind { - Void, /**< type with no size */ - Float, /**< 32 bit floating point type */ -@@ -388,6 +402,14 @@ - /*const*/ char *LLVMGetCollector(LLVMValueRef Fn); - void LLVMSetCollector(LLVMValueRef Fn, /*const*/ char *Coll); - -+void LLVMAddParamAttr(LLVMValueRef Arg, LLVMParamAttr Attr); -+void LLVMRemoveParamAttr(LLVMValueRef Arg, LLVMParamAttr Attr); -+void LLVMSetParamAlignment(LLVMValueRef Arg, uint Align); -+void LLVMAddInstrParamAttr(LLVMValueRef Inst, uint Index, LLVMParamAttr Attr); -+void LLVMRemoveInstrParamAttr(LLVMValueRef Inst, uint Index, LLVMParamAttr Attr); -+void LLVMSetInstrParamAlignment(LLVMValueRef Inst, uint Index, uint Align); -+ -+ - /* Operations on basic blocks */ - LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef Bb); - int LLVMValueIsBasicBlock(LLVMValueRef Val); -Index: llvm/llvm.d -=================================================================== ---- llvm/llvm.d (revision 170) -+++ llvm/llvm.d (working copy) -@@ -43,6 +43,8 @@ +diff -Naur -X exclude llvmbindings/llvm/llvm.d llvmbindings_ny/llvm/llvm.d +--- llvmbindings/llvm/llvm.d 2008-07-23 00:11:36.000000000 +0200 ++++ llvmbindings_ny/llvm/llvm.d 2008-07-22 23:51:15.000000000 +0200 +@@ -44,6 +44,8 @@ alias LLVMVisibility Visibility; /// alias LLVMValueKind ValueKind; @@ -51,7 +10,7 @@ /// class Module -@@ -836,6 +838,20 @@ +@@ -837,6 +839,20 @@ return getValueOf(v); } /// @@ -72,36 +31,126 @@ uint intrinsicID() { return LLVMGetIntrinsicID(value); -Index: llvm-fix.cpp -=================================================================== ---- llvm-fix.cpp (revision 170) -+++ llvm-fix.cpp (working copy) -@@ -29,10 +29,10 @@ - APN.convert(SemanticsForType(unwrap(RealTy)), APFloat::rmNearestTiesToEven); - return wrap(ConstantFP::get(unwrap(RealTy), APN)); - } -- -+/* - LLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text) { - return wrap(ConstantFP::get(unwrap(RealTy), - APFloat(SemanticsForType(unwrap(RealTy)), Text))); - } -- -+*/ - } -Index: llvm-ext.cpp -=================================================================== ---- llvm-ext.cpp (revision 170) -+++ llvm-ext.cpp (working copy) -@@ -80,9 +80,11 @@ - LLVMTargetDataRef LLVMGetTargetDataFromModule(LLVMModuleRef M) { - return wrap(new TargetData(unwrap(M))); - } -+/* - void LLVMDisposeTargetData(LLVMTargetDataRef TD) { - delete unwrap(TD); - } -+*/ - - // we need to be able to query the ABI size of a type as an integer - size_t LLVMGetABITypeSize(LLVMTargetDataRef TD, LLVMTypeRef T) { +diff -Naur -X exclude llvmbindings/llvm/type.d llvmbindings_ny/llvm/type.d +--- llvmbindings/llvm/type.d 2008-07-23 00:11:36.000000000 +0200 ++++ llvmbindings_ny/llvm/type.d 2008-07-23 00:07:46.000000000 +0200 +@@ -111,7 +111,7 @@ + Type refineAbstractType(Type to) { + assert(isAbstract()); + +- LLVMRefineAbstractType(type, to.type); ++ //LLVMRefineAbstractType(type, to.type); + + // Either type will do. Go through the registry to try to use the + // "canonical" Type object for the type. +diff -Naur -X exclude llvmbindings/llvm.patch llvmbindings_ny/llvm.patch +--- llvmbindings/llvm.patch 1970-01-01 01:00:00.000000000 +0100 ++++ llvmbindings_ny/llvm.patch 2008-07-22 23:45:58.000000000 +0200 +@@ -0,0 +1,107 @@ ++Index: llvm/c/Core.d ++=================================================================== ++--- llvm/c/Core.d (revision 170) +++++ llvm/c/Core.d (working copy) ++@@ -82,6 +82,20 @@ ++ */ ++ typedef LLVM_OpaqueMemoryBuffer* LLVMMemoryBufferRef; ++ +++enum LLVMParamAttr { +++ ZExt = 1<<0, +++ SExt = 1<<1, +++ NoReturn = 1<<2, +++ InReg = 1<<3, +++ StructRet = 1<<4, +++ NoUnwind = 1<<5, +++ NoAlias = 1<<6, +++ ByVal = 1<<7, +++ Nest = 1<<8, +++ ReadNone = 1<<9, +++ ReadOnly = 1<<10 +++} +++ ++ enum LLVMTypeKind { ++ Void, /**< type with no size */ ++ Float, /**< 32 bit floating point type */ ++@@ -388,6 +402,14 @@ ++ /*const*/ char *LLVMGetCollector(LLVMValueRef Fn); ++ void LLVMSetCollector(LLVMValueRef Fn, /*const*/ char *Coll); ++ +++void LLVMAddParamAttr(LLVMValueRef Arg, LLVMParamAttr Attr); +++void LLVMRemoveParamAttr(LLVMValueRef Arg, LLVMParamAttr Attr); +++void LLVMSetParamAlignment(LLVMValueRef Arg, uint Align); +++void LLVMAddInstrParamAttr(LLVMValueRef Inst, uint Index, LLVMParamAttr Attr); +++void LLVMRemoveInstrParamAttr(LLVMValueRef Inst, uint Index, LLVMParamAttr Attr); +++void LLVMSetInstrParamAlignment(LLVMValueRef Inst, uint Index, uint Align); +++ +++ ++ /* Operations on basic blocks */ ++ LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef Bb); ++ int LLVMValueIsBasicBlock(LLVMValueRef Val); ++Index: llvm/llvm.d ++=================================================================== ++--- llvm/llvm.d (revision 170) +++++ llvm/llvm.d (working copy) ++@@ -43,6 +43,8 @@ ++ alias LLVMVisibility Visibility; ++ /// ++ alias LLVMValueKind ValueKind; +++/// +++public alias LLVMParamAttr ParamAttr; ++ ++ /// ++ class Module ++@@ -836,6 +838,20 @@ ++ return getValueOf(v); ++ } ++ /// +++ void addParamAttr(uint idx, ParamAttr PA) +++ { +++ auto v = LLVMGetParam(value, idx); +++ assert(v !is null); +++ LLVMAddParamAttr(v, PA); +++ } +++ /// +++ void removeParamAttr(uint idx, ParamAttr PA) +++ { +++ auto v = LLVMGetParam(value, idx); +++ assert(v !is null); +++ LLVMRemoveParamAttr(v, PA); +++ } +++ /// ++ uint intrinsicID() ++ { ++ return LLVMGetIntrinsicID(value); ++Index: llvm-fix.cpp ++=================================================================== ++--- llvm-fix.cpp (revision 170) +++++ llvm-fix.cpp (working copy) ++@@ -29,10 +29,10 @@ ++ APN.convert(SemanticsForType(unwrap(RealTy)), APFloat::rmNearestTiesToEven); ++ return wrap(ConstantFP::get(unwrap(RealTy), APN)); ++ } ++- +++/* ++ LLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text) { ++ return wrap(ConstantFP::get(unwrap(RealTy), ++ APFloat(SemanticsForType(unwrap(RealTy)), Text))); ++ } ++- +++*/ ++ } ++Index: llvm-ext.cpp ++=================================================================== ++--- llvm-ext.cpp (revision 170) +++++ llvm-ext.cpp (working copy) ++@@ -80,9 +80,11 @@ ++ LLVMTargetDataRef LLVMGetTargetDataFromModule(LLVMModuleRef M) { ++ return wrap(new TargetData(unwrap(M))); ++ } +++/* ++ void LLVMDisposeTargetData(LLVMTargetDataRef TD) { ++ delete unwrap(TD); ++ } +++*/ ++ ++ // we need to be able to query the ABI size of a type as an integer ++ size_t LLVMGetABITypeSize(LLVMTargetDataRef TD, LLVMTypeRef T) {