pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/lang/llvm
Module Name: pkgsrc
Committed By: tnn
Date: Tue Sep 15 21:10:07 UTC 2026
Modified Files:
pkgsrc/lang/llvm: distinfo
Added Files:
pkgsrc/lang/llvm/patches: patch-include_llvm_CodeGen_RDFGraph.h
patch-include_llvm_CodeGen_RDFRegisters.h
patch-lib_CodeGen_RDFLiveness.cpp
patch-lib_Target_Hexagon_RDFCopy.cpp
patch-lib_Target_Hexagon_RDFCopy.h
Log Message:
llvm: fix build with xcode 27
Apply commit a558d656043734cc4d02e0a0a12e4c308c28f8c7 from upstream.
I won't pretend to understand modern C++ to the extent that I can
adequately explain this change, but I guess it removes UB and does not
change code behaviour.
To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 pkgsrc/lang/llvm/distinfo
cvs rdiff -u -r0 -r1.1 \
pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFGraph.h \
pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFRegisters.h \
pkgsrc/lang/llvm/patches/patch-lib_CodeGen_RDFLiveness.cpp \
pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.cpp \
pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/lang/llvm/distinfo
diff -u pkgsrc/lang/llvm/distinfo:1.49 pkgsrc/lang/llvm/distinfo:1.50
--- pkgsrc/lang/llvm/distinfo:1.49 Thu Apr 16 06:33:52 2026
+++ pkgsrc/lang/llvm/distinfo Tue Sep 15 21:10:06 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.49 2026/04/16 06:33:52 wiz Exp $
+$NetBSD: distinfo,v 1.50 2026/09/15 21:10:06 tnn Exp $
BLAKE2s (llvm-project-21.1.8.src.tar.xz) = e6db98fed167ddd56b49c7eb46c4de7e7e8e08158e9c99ae79806983bcb60ae9
SHA512 (llvm-project-21.1.8.src.tar.xz) = cae4c44e7bf678071723da63ad5839491d717a7233e7f4791aa408207f3ea42f52de939ad15189b112c02a0770f1bb8d59bae6ad31ef53417a6eea7770fe52ab
@@ -7,5 +7,10 @@ SHA1 (patch-CMakeLists.txt) = c53cef61bd
SHA1 (patch-cmake_config-ix.cmake) = f5cd0c949d35020d1051f95417e7944aa71a3d54
SHA1 (patch-cmake_modules_AddLLVM.cmake) = 4e6668e0c3e13423ce3e19304f4ad60f66d41562
SHA1 (patch-include_llvm-c_DataTypes.h) = ff547cae5bdf90c5a1371b9eb196e7537a03b18d
+SHA1 (patch-include_llvm_CodeGen_RDFGraph.h) = 057a04619997fd7812b93dafa52f00e85faed27a
+SHA1 (patch-include_llvm_CodeGen_RDFRegisters.h) = 906be4b85954ca4a1dc4b34946a7bfcbf6c4758a
+SHA1 (patch-lib_CodeGen_RDFLiveness.cpp) = 1baf8a89f5f0e6b346f6e848cebefcf794d56eb5
+SHA1 (patch-lib_Target_Hexagon_RDFCopy.cpp) = e91e07d53455a3e6e24e69556efd13b2e6480011
+SHA1 (patch-lib_Target_Hexagon_RDFCopy.h) = a8161a00d03080b6f513f5bb27177e9c0e260d63
SHA1 (patch-tools_llvm-shlib_CMakeLists.txt) = 92558f2d7d87b7a26f7f3a2b3b3dc539ae13e672
SHA1 (patch-utils_llvm-lit_CMakeLists.txt) = 8b18659fe7189c9077b0409e123d41c01e8c8610
Added files:
Index: pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFGraph.h
diff -u /dev/null pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFGraph.h:1.1
--- /dev/null Tue Sep 15 21:10:07 2026
+++ pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFGraph.h Tue Sep 15 21:10:06 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-include_llvm_CodeGen_RDFGraph.h,v 1.1 2026/09/15 21:10:06 tnn Exp $
+
+https://github.com/llvm/llvm-project/commit/a558d656043734cc4d02e0a0a12e4c308c28f8c7.patch
+
+--- include/llvm/CodeGen/RDFGraph.h.orig 2025-12-12 10:35:47.000000000 +0000
++++ include/llvm/CodeGen/RDFGraph.h
+@@ -447,7 +447,7 @@ private:
+ AllocatorTy MemPool;
+ };
+
+-using RegisterSet = std::set<RegisterRef>;
++using RegisterSet = std::set<RegisterRef, RegisterRefLess>;
+
+ struct TargetOperandInfo {
+ TargetOperandInfo(const TargetInstrInfo &tii) : TII(tii) {}
Index: pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFRegisters.h
diff -u /dev/null pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFRegisters.h:1.1
--- /dev/null Tue Sep 15 21:10:07 2026
+++ pkgsrc/lang/llvm/patches/patch-include_llvm_CodeGen_RDFRegisters.h Tue Sep 15 21:10:06 2026
@@ -0,0 +1,84 @@
+$NetBSD: patch-include_llvm_CodeGen_RDFRegisters.h,v 1.1 2026/09/15 21:10:06 tnn Exp $
+
+https://github.com/llvm/llvm-project/commit/a558d656043734cc4d02e0a0a12e4c308c28f8c7.patch
+
+--- include/llvm/CodeGen/RDFRegisters.h.orig 2025-12-12 10:35:47.000000000 +0000
++++ include/llvm/CodeGen/RDFRegisters.h
+@@ -199,6 +199,33 @@ private:
+ std::vector<AliasInfo> AliasInfos;
+ };
+
++struct RegisterRefEqualTo {
++ constexpr RegisterRefEqualTo(const llvm::rdf::PhysicalRegisterInfo &pri)
++ : PRI(&pri) {}
++
++ bool operator()(llvm::rdf::RegisterRef A, llvm::rdf::RegisterRef B) const {
++ return PRI->equal_to(A, B);
++ }
++
++private:
++ // Make it a pointer just in case. See comment in `RegisterRefLess` below.
++ const llvm::rdf::PhysicalRegisterInfo *PRI;
++};
++
++struct RegisterRefLess {
++ constexpr RegisterRefLess(const llvm::rdf::PhysicalRegisterInfo &pri)
++ : PRI(&pri) {}
++
++ bool operator()(llvm::rdf::RegisterRef A, llvm::rdf::RegisterRef B) const {
++ return PRI->less(A, B);
++ }
++
++private:
++ // Make it a pointer because apparently some versions of MSVC use std::swap
++ // on the comparator object.
++ const llvm::rdf::PhysicalRegisterInfo *PRI;
++};
++
+ struct RegisterAggr {
+ RegisterAggr(const PhysicalRegisterInfo &pri)
+ : Units(pri.getTRI().getNumRegUnits()), PRI(pri) {}
+@@ -334,18 +361,6 @@ template <> struct hash<llvm::rdf::Regis
+ }
+ };
+
+-template <> struct equal_to<llvm::rdf::RegisterRef> {
+- constexpr equal_to(const llvm::rdf::PhysicalRegisterInfo &pri) : PRI(&pri) {}
+-
+- bool operator()(llvm::rdf::RegisterRef A, llvm::rdf::RegisterRef B) const {
+- return PRI->equal_to(A, B);
+- }
+-
+-private:
+- // Make it a pointer just in case. See comment in `less` below.
+- const llvm::rdf::PhysicalRegisterInfo *PRI;
+-};
+-
+ template <> struct equal_to<llvm::rdf::RegisterAggr> {
+ bool operator()(const llvm::rdf::RegisterAggr &A,
+ const llvm::rdf::RegisterAggr &B) const {
+@@ -353,23 +368,10 @@ template <> struct equal_to<llvm::rdf::R
+ }
+ };
+
+-template <> struct less<llvm::rdf::RegisterRef> {
+- constexpr less(const llvm::rdf::PhysicalRegisterInfo &pri) : PRI(&pri) {}
+-
+- bool operator()(llvm::rdf::RegisterRef A, llvm::rdf::RegisterRef B) const {
+- return PRI->less(A, B);
+- }
+-
+-private:
+- // Make it a pointer because apparently some versions of MSVC use std::swap
+- // on the std::less specialization.
+- const llvm::rdf::PhysicalRegisterInfo *PRI;
+-};
+-
+ } // namespace std
+
+ namespace llvm::rdf {
+-using RegisterSet = std::set<RegisterRef, std::less<RegisterRef>>;
++using RegisterSet = std::set<RegisterRef, RegisterRefLess>;
+ } // namespace llvm::rdf
+
+ #endif // LLVM_CODEGEN_RDFREGISTERS_H
Index: pkgsrc/lang/llvm/patches/patch-lib_CodeGen_RDFLiveness.cpp
diff -u /dev/null pkgsrc/lang/llvm/patches/patch-lib_CodeGen_RDFLiveness.cpp:1.1
--- /dev/null Tue Sep 15 21:10:07 2026
+++ pkgsrc/lang/llvm/patches/patch-lib_CodeGen_RDFLiveness.cpp Tue Sep 15 21:10:07 2026
@@ -0,0 +1,36 @@
+$NetBSD: patch-lib_CodeGen_RDFLiveness.cpp,v 1.1 2026/09/15 21:10:07 tnn Exp $
+
+https://github.com/llvm/llvm-project/commit/a558d656043734cc4d02e0a0a12e4c308c28f8c7.patch
+
+--- lib/CodeGen/RDFLiveness.cpp.orig 2025-12-12 10:35:47.000000000 +0000
++++ lib/CodeGen/RDFLiveness.cpp
+@@ -652,8 +652,9 @@ void Liveness::computePhiInfo() {
+ // defs, cache the result of subtracting these defs from a given register
+ // ref.
+ using RefHash = std::hash<RegisterRef>;
+- using RefEqual = std::equal_to<RegisterRef>;
+- using SubMap = std::unordered_map<RegisterRef, RegisterRef>;
++ using RefEqual = RegisterRefEqualTo;
++ using SubMap =
++ std::unordered_map<RegisterRef, RegisterRef, RefHash, RefEqual>;
+ std::unordered_map<RegisterAggr, SubMap> Subs;
+ auto ClearIn = [](RegisterRef RR, const RegisterAggr &Mid, SubMap &SM) {
+ if (Mid.empty())
+@@ -868,7 +869,7 @@ void Liveness::computeLiveIns() {
+ std::vector<RegisterRef> LV;
+ for (const MachineBasicBlock::RegisterMaskPair &LI : B.liveins())
+ LV.push_back(RegisterRef(LI.PhysReg, LI.LaneMask));
+- llvm::sort(LV, std::less<RegisterRef>(PRI));
++ llvm::sort(LV, RegisterRefLess(PRI));
+ dbgs() << printMBBReference(B) << "\t rec = {";
+ for (auto I : LV)
+ dbgs() << ' ' << Print(I, DFG);
+@@ -878,7 +879,7 @@ void Liveness::computeLiveIns() {
+ LV.clear();
+ for (RegisterRef RR : LiveMap[&B].refs())
+ LV.push_back(RR);
+- llvm::sort(LV, std::less<RegisterRef>(PRI));
++ llvm::sort(LV, RegisterRefLess(PRI));
+ dbgs() << "\tcomp = {";
+ for (auto I : LV)
+ dbgs() << ' ' << Print(I, DFG);
Index: pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.cpp
diff -u /dev/null pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.cpp:1.1
--- /dev/null Tue Sep 15 21:10:07 2026
+++ pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.cpp Tue Sep 15 21:10:07 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_Target_Hexagon_RDFCopy.cpp,v 1.1 2026/09/15 21:10:07 tnn Exp $
+
+https://github.com/llvm/llvm-project/commit/a558d656043734cc4d02e0a0a12e4c308c28f8c7.patch
+
+--- lib/Target/Hexagon/RDFCopy.cpp.orig 2025-12-12 10:35:47.000000000 +0000
++++ lib/Target/Hexagon/RDFCopy.cpp
+@@ -108,7 +108,7 @@ bool CopyPropagation::scanBlock(MachineB
+ for (NodeAddr<InstrNode*> IA : BA.Addr->members(DFG)) {
+ if (DFG.IsCode<NodeAttrs::Stmt>(IA)) {
+ NodeAddr<StmtNode*> SA = IA;
+- EqualityMap EM(std::less<RegisterRef>(DFG.getPRI()));
++ EqualityMap EM(RegisterRefLess(DFG.getPRI()));
+ if (interpretAsCopy(SA.Addr->getCode(), EM))
+ recordCopy(SA, EM);
+ }
Index: pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.h
diff -u /dev/null pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.h:1.1
--- /dev/null Tue Sep 15 21:10:07 2026
+++ pkgsrc/lang/llvm/patches/patch-lib_Target_Hexagon_RDFCopy.h Tue Sep 15 21:10:07 2026
@@ -0,0 +1,35 @@
+$NetBSD: patch-lib_Target_Hexagon_RDFCopy.h,v 1.1 2026/09/15 21:10:07 tnn Exp $
+
+https://github.com/llvm/llvm-project/commit/a558d656043734cc4d02e0a0a12e4c308c28f8c7.patch
+
+--- lib/Target/Hexagon/RDFCopy.h.orig 2025-12-12 10:35:47.000000000 +0000
++++ lib/Target/Hexagon/RDFCopy.h
+@@ -25,8 +25,8 @@ class MachineInstr;
+ namespace rdf {
+
+ struct CopyPropagation {
+- CopyPropagation(DataFlowGraph &dfg) : MDT(dfg.getDT()), DFG(dfg),
+- RDefMap(std::less<RegisterRef>(DFG.getPRI())) {}
++ CopyPropagation(DataFlowGraph &dfg)
++ : MDT(dfg.getDT()), DFG(dfg), RDefMap(RegisterRefLess(DFG.getPRI())) {}
+
+ virtual ~CopyPropagation() = default;
+
+@@ -35,7 +35,7 @@ namespace rdf {
+ bool trace() const { return Trace; }
+ DataFlowGraph &getDFG() { return DFG; }
+
+- using EqualityMap = std::map<RegisterRef, RegisterRef>;
++ using EqualityMap = std::map<RegisterRef, RegisterRef, RegisterRefLess>;
+ virtual bool interpretAsCopy(const MachineInstr *MI, EqualityMap &EM);
+
+ private:
+@@ -45,7 +45,7 @@ namespace rdf {
+ bool Trace = false;
+
+ // map: register -> (map: stmt -> reaching def)
+- std::map<RegisterRef,std::map<NodeId,NodeId>> RDefMap;
++ std::map<RegisterRef, std::map<NodeId, NodeId>, RegisterRefLess> RDefMap;
+ // map: statement -> (map: dst reg -> src reg)
+ std::map<NodeId, EqualityMap> CopyMap;
+ std::vector<NodeId> Copies;
Home |
Main Index |
Thread Index |
Old Index