pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/cad/ghdl
Module Name: pkgsrc
Committed By: wiz
Date: Thu Dec 22 16:23:28 UTC 2022
Modified Files:
pkgsrc/cad/ghdl: Makefile distinfo
Added Files:
pkgsrc/cad/ghdl/patches: patch-src_ortho_llvm6_llvm-cbindings.cpp
Log Message:
ghdl: add upstream patch to fix build with llvm 15
Bump PKGREVISION
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 pkgsrc/cad/ghdl/Makefile
cvs rdiff -u -r1.7 -r1.8 pkgsrc/cad/ghdl/distinfo
cvs rdiff -u -r0 -r1.1 \
pkgsrc/cad/ghdl/patches/patch-src_ortho_llvm6_llvm-cbindings.cpp
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/cad/ghdl/Makefile
diff -u pkgsrc/cad/ghdl/Makefile:1.11 pkgsrc/cad/ghdl/Makefile:1.12
--- pkgsrc/cad/ghdl/Makefile:1.11 Wed Nov 23 16:19:25 2022
+++ pkgsrc/cad/ghdl/Makefile Thu Dec 22 16:23:28 2022
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.11 2022/11/23 16:19:25 adam Exp $
+# $NetBSD: Makefile,v 1.12 2022/12/22 16:23:28 wiz Exp $
DISTNAME= ghdl-2.0.0
-PKGREVISION= 1
+PKGREVISION= 2
CATEGORIES= cad
MASTER_SITES= ${MASTER_SITE_GITHUB:=ghdl/}
GITHUB_PROJECT= ghdl
Index: pkgsrc/cad/ghdl/distinfo
diff -u pkgsrc/cad/ghdl/distinfo:1.7 pkgsrc/cad/ghdl/distinfo:1.8
--- pkgsrc/cad/ghdl/distinfo:1.7 Thu Sep 22 11:47:14 2022
+++ pkgsrc/cad/ghdl/distinfo Thu Dec 22 16:23:28 2022
@@ -1,7 +1,8 @@
-$NetBSD: distinfo,v 1.7 2022/09/22 11:47:14 wiz Exp $
+$NetBSD: distinfo,v 1.8 2022/12/22 16:23:28 wiz Exp $
BLAKE2s (ghdl-2.0.0.tar.gz) = a3297be935cd7a25f9003810c2a0895162ac3ead5d83fe61b4b15fac1ff415d8
SHA512 (ghdl-2.0.0.tar.gz) = f4474a7916f9cc5cce976d0b4620d1441c377d72b749867b170397bf62d534983b37d4fc9bb31ef85e40eb7beb9b3a681a7ac32931f665934b357e97e74be6da
Size (ghdl-2.0.0.tar.gz) = 6825565 bytes
SHA1 (patch-configure) = fc358c33df2272a0bfaab9fbe334f24365da149b
+SHA1 (patch-src_ortho_llvm6_llvm-cbindings.cpp) = 6592a31925004573beb7d8bc4519f0e4fffc6340
SHA1 (patch-src_ortho_mcode_memsegs__c.c) = 5669dda0130ade50caf7538c3f2c6cfed061ac5b
Added files:
Index: pkgsrc/cad/ghdl/patches/patch-src_ortho_llvm6_llvm-cbindings.cpp
diff -u /dev/null pkgsrc/cad/ghdl/patches/patch-src_ortho_llvm6_llvm-cbindings.cpp:1.1
--- /dev/null Thu Dec 22 16:23:28 2022
+++ pkgsrc/cad/ghdl/patches/patch-src_ortho_llvm6_llvm-cbindings.cpp Thu Dec 22 16:23:28 2022
@@ -0,0 +1,293 @@
+$NetBSD: patch-src_ortho_llvm6_llvm-cbindings.cpp,v 1.1 2022/12/22 16:23:28 wiz Exp $
+
+llvm 15 support
+https://github.com/ghdl/ghdl/commit/bc95c0710baaf539085879e5008361e3ecb04600
+
+--- src/ortho/llvm6/llvm-cbindings.cpp.orig 2022-02-28 18:46:53.000000000 +0000
++++ src/ortho/llvm6/llvm-cbindings.cpp
+@@ -41,6 +41,15 @@
+ #define USE_DEBUG
+ #endif
+
++#if LLVM_VERSION_MAJOR >= 15
++#define USE_OPAQUE_POINTERS
++#else
++#define LLVMBuildGEP2(B,T,P,I,Nu,Na) LLVMBuildGEP(B,P,I,Nu,Na)
++#define LLVMBuildLoad2(B,T,P,N) LLVMBuildLoad(B,P,N)
++#define LLVMBuildCall2(B,T,F,A,Nu,Na) LLVMBuildCall(B,F,A,Nu,Na)
++#define LLVMConstGEP2(T,V,I,N) LLVMConstGEP(V,I,N)
++#endif
++
+ #ifdef USE_DEBUG
+ #include "llvm/IR/IRBuilder.h"
+ #include "llvm/IR/DIBuilder.h"
+@@ -77,6 +86,7 @@ static LLVMBuilderRef ExtraBuilder;
+ static LLVMValueRef StackSaveFun;
+ static LLVMValueRef StackRestoreFun;
+ static LLVMValueRef CopySignFun;
++static LLVMTypeRef CopySignFunType;
+
+ static LLVMValueRef Fp0_5;
+
+@@ -311,9 +321,9 @@ ortho_llvm_init(const char *Filename, un
+
+ ParamTypes[0] = LLVMDoubleType();
+ ParamTypes[1] = LLVMDoubleType();
++ CopySignFunType = LLVMFunctionType(LLVMDoubleType(), ParamTypes, 2, false);
+ CopySignFun = LLVMAddFunction
+- (TheModule, "llvm.copysign.f64",
+- LLVMFunctionType(LLVMDoubleType(), ParamTypes, 2, false));
++ (TheModule, "llvm.copysign.f64", CopySignFunType);
+
+ Fp0_5 = LLVMConstReal(LLVMDoubleType(), 0.5);
+
+@@ -326,7 +336,7 @@ ortho_llvm_init(const char *Filename, un
+
+ AttrId = LLVMGetEnumAttributeKindForName("uwtable", 7);
+ assert (AttrId != 0);
+- UwtableAttr = LLVMCreateEnumAttribute(LLVMGetGlobalContext(), AttrId, 0);
++ UwtableAttr = LLVMCreateEnumAttribute(LLVMGetGlobalContext(), AttrId, 1);
+ #endif
+
+ #ifdef USE_DEBUG
+@@ -602,11 +612,19 @@ struct OTnodeIncompleteAcc : OTnodeAccBa
+ extern "C" OTnode
+ new_access_type(OTnode DType)
+ {
++ LLVMTypeRef Ptr;
++
++#ifdef USE_OPAQUE_POINTERS
++ Ptr = LLVMPointerTypeInContext(LLVMGetGlobalContext(), 0);
++#else
+ if (DType == nullptr) {
+ return new OTnodeIncompleteAcc();
+- } else {
+- return new OTnodeAcc(LLVMPointerType(DType->Ref, 0), DType);
+ }
++
++ Ptr = LLVMPointerType(DType->Ref, 0);
++#endif
++
++ return new OTnodeAcc(Ptr, DType);
+ }
+
+ extern "C" void
+@@ -615,8 +633,11 @@ finish_access_type(OTnodeAcc *AccType, O
+ // Must be incomplete.
+ assert (AccType->Acc == nullptr);
+
++#ifndef USE_OPAQUE_POINTERS
+ LLVMTypeRef Types[1] = { DType->Ref };
+ LLVMStructSetBody(LLVMGetElementType(AccType->Ref), Types, 1, 0);
++#endif
++
+ AccType->Acc = DType;
+ #ifdef USE_DEBUG
+ if (FlagDebug) {
+@@ -740,7 +761,7 @@ finish_record_type(OElementList *Els, OT
+ LLVMTypeRef *Types = new LLVMTypeRef[Els->BndCount];
+
+ // Create types array for elements.
+- int i = 0;
++ unsigned i = 0;
+ bool Bounded = true;
+ for (OFnodeBase *Field : *Els->Els) {
+ if (Field->FType->Bounded)
+@@ -1014,18 +1035,15 @@ new_type_decl(OIdent Ident, OTnode Atype
+ break;
+
+ case OTKIncompleteAccess:
+- if (static_cast<OTnodeAccBase*>(Atype)->Acc == nullptr) {
+- // Still incomplete
++ case OTKAccess:
++ {
++ OTnode Ptr = static_cast<OTnodeAccBase*>(Atype)->Acc;
++ // Possibly still incomplete
+ Atype->Dbg = DBuilder->createPointerType
+- (nullptr, Atype->getBitSize(), 0, None, StringRef(Ident.cstr));
++ (Ptr ? Ptr->Dbg : nullptr,
++ Atype->getBitSize(), 0, None, StringRef(Ident.cstr));
+ break;
+ }
+- // Fallthrough
+- case OTKAccess:
+- Atype->Dbg = DBuilder->createPointerType
+- (static_cast<OTnodeAcc*>(Atype)->Acc->Dbg,
+- Atype->getBitSize(), 0, None, StringRef(Ident.cstr));
+- break;
+
+ case OTKArray:
+ // The debug info has already been created for arrays, as they can be
+@@ -1432,13 +1450,14 @@ new_interface_decl(OInterList *Inters,
+ struct ODnodeSubprg : ODnodeBase {
+ // Interfaces
+ std::vector<ODnodeInter *> Inters;
++ LLVMTypeRef Ftype;
+ // Storage
+ OStorage Storage;
+ OIdent Ident;
+ ODKind getKind() const override { return ODKSubprg; }
+- ODnodeSubprg(LLVMValueRef R, OTnode T, OStorage S, OIdent Id,
++ ODnodeSubprg(LLVMValueRef R, OTnode T, LLVMTypeRef Ft, OStorage S, OIdent Id,
+ const std::vector<ODnodeInter *> &Inters) :
+- ODnodeBase(R, T), Inters(Inters), Storage(S), Ident(Id) {}
++ ODnodeBase(R, T), Inters(Inters), Ftype(Ft), Storage(S), Ident(Id) {}
+ };
+
+ extern "C" void
+@@ -1488,8 +1507,8 @@ finish_subprogram_decl(OInterList *Inter
+
+ // Create the result.
+ ODnodeSubprg *R;
+- R = new ODnodeSubprg(Decl, Inters->Rtype, Inters->Storage, Inters->Ident,
+- std::move(*Inters->Inters));
++ R = new ODnodeSubprg(Decl, Inters->Rtype, Ftype, Inters->Storage,
++ Inters->Ident, std::move(*Inters->Inters));
+ *Res = R;
+ }
+
+@@ -1693,8 +1712,8 @@ finish_declare_stmt ()
+
+ if (CurrentDeclareBlock->StackValue != nullptr) {
+ // Restore stack pointer
+- LLVMBuildCall(Builder, StackRestoreFun,
+- &CurrentDeclareBlock->StackValue, 1, "");
++ LLVMBuildCall2(Builder, LLVMVoidType(), StackRestoreFun,
++ &CurrentDeclareBlock->StackValue, 1, "");
+ }
+ // Execution will continue on the next statement
+ LLVMBuildBr(Builder, Bb);
+@@ -2084,8 +2103,8 @@ new_function_call (OAssocList *Assocs)
+ LLVMValueRef Res;
+
+ if (!Unreach) {
+- Res = LLVMBuildCall(Builder, Assocs->Subprg->Ref,
+- Assocs->Vals, Assocs->Subprg->Inters.size(), "");
++ Res = LLVMBuildCall2(Builder, Assocs->Subprg->Ftype, Assocs->Subprg->Ref,
++ Assocs->Vals, Assocs->Subprg->Inters.size(), "");
+ } else {
+ Res = nullptr;
+ }
+@@ -2097,8 +2116,8 @@ extern "C" void
+ new_procedure_call (OAssocList *Assocs)
+ {
+ if (!Unreach) {
+- LLVMBuildCall(Builder, Assocs->Subprg->Ref,
+- Assocs->Vals, Assocs->Subprg->Inters.size(), "");
++ LLVMBuildCall2(Builder, Assocs->Subprg->Ftype, Assocs->Subprg->Ref,
++ Assocs->Vals, Assocs->Subprg->Inters.size(), "");
+ }
+ delete Assocs->Vals;
+ }
+@@ -2468,7 +2487,7 @@ new_convert (OEnode Val, OTnode Rtype)
+ LLVMValueRef Args[2];
+ Args[0] = Fp0_5;
+ Args[1] = Val.Ref;
+- V = LLVMBuildCall(Builder, CopySignFun, Args, 2, "");
++ V = LLVMBuildCall2(Builder, CopySignFunType, CopySignFun, Args, 2, "");
+ V = LLVMBuildFAdd(Builder, V, Val.Ref, "");
+ Res = LLVMBuildFPToSI(Builder, V, Rtype->Ref, "");
+ }
+@@ -2528,8 +2547,12 @@ new_alloca (OTnode Rtype, OEnode Size)
+ LLVMPositionBuilderBefore(ExtraBuilder, FirstInsn);
+ Bld = ExtraBuilder;
+ }
++#ifdef USE_OPAQUE_POINTERS
++ LLVMTypeRef Ptr = LLVMPointerTypeInContext(LLVMGetGlobalContext(), 0);
++#endif
++
+ CurrentDeclareBlock->StackValue =
+- LLVMBuildCall(Bld, StackSaveFun, nullptr, 0, "");
++ LLVMBuildCall2(Bld, Ptr, StackSaveFun, nullptr, 0, "");
+ }
+ Res = LLVMBuildArrayAlloca(Builder, LLVMInt8Type(), Size.Ref, "");
+ // Convert
+@@ -2564,10 +2587,10 @@ new_global_selected_element (OGnode Rec,
+ case OF_Record:
+ {
+ LLVMValueRef Idx[2];
++ OFnodeRec *F = static_cast<OFnodeRec *>(El);
+ Idx[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+- Idx[1] = LLVMConstInt(LLVMInt32Type(),
+- static_cast<OFnodeRec *>(El)->Index, 0);
+- Res = LLVMConstGEP(Rec.Ref, Idx, 2);
++ Idx[1] = LLVMConstInt(LLVMInt32Type(), F->Index, 0);
++ Res = LLVMConstGEP2(Rec.Gtype->Ref, Rec.Ref, Idx, 2);
+ }
+ break;
+ case OF_Union:
+@@ -2629,7 +2652,7 @@ new_value (OLnode *Lvalue)
+ if (Lvalue->Direct)
+ Res = Lvalue->Ref;
+ else
+- Res = LLVMBuildLoad(Builder, Lvalue->Ref, "");
++ Res = LLVMBuildLoad2(Builder, Lvalue->Ltype->Ref, Lvalue->Ref, "");
+ }
+ return {Res, Lvalue->Ltype };
+ }
+@@ -2646,15 +2669,16 @@ new_indexed_element (OLnode *Arr, OEnode
+ {
+ LLVMValueRef Idx[2];
+ LLVMValueRef Res;
++ OTnode ElType = static_cast<OTnodeArr *>(Arr->Ltype)->ElType;
+
+ if (Unreach)
+ Res = nullptr;
+ else {
+ Idx[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+ Idx[1] = Index.Ref;
+- Res = LLVMBuildGEP(Builder, Arr->Ref, Idx, 2, "");
++ Res = LLVMBuildGEP2(Builder, Arr->Ltype->Ref, Arr->Ref, Idx, 2, "");
+ }
+- return { false, Res, static_cast<OTnodeArr *>(Arr->Ltype)->ElType };
++ return { false, Res, ElType };
+ }
+
+ extern "C" OLnode
+@@ -2668,7 +2692,7 @@ new_slice (OLnode *Arr, OTnode Rtype, OE
+ else {
+ Idx[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+ Idx[1] = Index.Ref;
+- Res = LLVMBuildGEP(Builder, Arr->Ref, Idx, 2, "");
++ Res = LLVMBuildGEP2(Builder, Arr->Ltype->Ref, Arr->Ref, Idx, 2, "");
+ Res = LLVMBuildBitCast(Builder, Res, LLVMPointerType(Rtype->Ref, 0), "");
+ }
+ return { false, Res, Rtype};
+@@ -2686,10 +2710,10 @@ new_selected_element (OLnode *Rec, OFnod
+ case OF_Record:
+ {
+ LLVMValueRef Idx[2];
++ OFnodeRec *F = static_cast<OFnodeRec *>(El);
+ Idx[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+- Idx[1] = LLVMConstInt(LLVMInt32Type(),
+- static_cast<OFnodeRec *>(El)->Index, 0);
+- Res = LLVMBuildGEP(Builder, Rec->Ref, Idx, 2, "");
++ Idx[1] = LLVMConstInt(LLVMInt32Type(), F->Index, 0);
++ Res = LLVMBuildGEP2(Builder, Rec->Ltype->Ref, Rec->Ref, Idx, 2, "");
+ }
+ break;
+ case OF_Union:
+@@ -2705,6 +2729,7 @@ extern "C" OLnode
+ new_access_element (OEnode Acc)
+ {
+ LLVMValueRef Res;
++ OTnode Ptype = static_cast<OTnodeAccBase *>(Acc.Etype)->Acc;
+
+ switch(Acc.Etype->Kind) {
+ case OTKAccess:
+@@ -2717,13 +2742,13 @@ new_access_element (OEnode Acc)
+
+ Idx[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+ Idx[1] = LLVMConstInt(LLVMInt32Type(), 0, 0);
+- Res = LLVMBuildGEP(Builder, Acc.Ref, Idx, 2, "");
++ Res = LLVMBuildGEP2(Builder, Acc.Etype->Ref, Acc.Ref, Idx, 2, "");
+ }
+ break;
+ default:
+ llvm_unreachable("bad new_access_element");
+ }
+- return {false, Res, static_cast<OTnodeAccBase *>(Acc.Etype)->Acc };
++ return {false, Res, Ptype };
+ }
+
+ extern "C" OEnode
Home |
Main Index |
Thread Index |
Old Index