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