Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package llvm22 for openSUSE:Factory checked in at 2026-08-30 19:06:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm22 (Old) and /work/SRC/openSUSE:Factory/.llvm22.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm22" Sun Aug 30 19:06:38 2026 rev:8 rq:1374606 version:22.1.8 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm22/llvm22.changes 2026-08-25 13:18:43.714080769 +0200 +++ /work/SRC/openSUSE:Factory/.llvm22.new.1265/llvm22.changes 2026-08-30 19:06:47.730081381 +0200 @@ -1,0 +2,5 @@ +Fri Aug 28 08:20:40 UTC 2026 - Bernhard Wiedemann <[email protected]> + +- Add llvm-deterministic-loopunroll.patch for reproducible builds. + +------------------------------------------------------------------- New: ---- llvm-deterministic-loopunroll.patch ----------(New B)---------- New: - Add llvm-deterministic-loopunroll.patch for reproducible builds. ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm22.spec ++++++ --- /var/tmp/diff_new_pack.c4t64e/_old 2026-08-30 19:06:50.430175288 +0200 +++ /var/tmp/diff_new_pack.c4t64e/_new 2026-08-30 19:06:50.434175427 +0200 @@ -436,6 +436,8 @@ Patch31: clang-riscv-triple.patch # PATCH-FIX-UPSTREAM Enable build of bolt's hugify runtime on riscv64. Patch32: bolt-riscv-build-hugify-runtime.patch +# PATCH-FIX-UPSTREAM Use MapVector for deterministic iteration order +Patch33: https://github.com/llvm/llvm-project/commit/965f9d87adb0a7376454374fbc140ab69bd796a9.patch#/llvm-deterministic-loopunroll.patch BuildRequires: %{python_pkg}-base >= 3.8 BuildRequires: binutils-devel >= 2.21.90 BuildRequires: cmake >= 3.13.4 @@ -897,6 +899,7 @@ %patch -P 25 -p1 %patch -P 28 -p1 %patch -P 30 -p1 +%patch -P 33 -p1 # clang %patch -P 2 ++++++ llvm-deterministic-loopunroll.patch ++++++ >From 965f9d87adb0a7376454374fbc140ab69bd796a9 Mon Sep 17 00:00:00 2001 From: Florian Hahn <[email protected]> Date: Fri, 27 Mar 2026 13:02:51 +0000 Subject: [PATCH] [LoopUnroll] Use MapVector for deterministic iteration order. (#188821) NonLoopBlocksIDom determines the order we adjust the DT, impacting DRT child ordering. Similarly, ExitInfos order impacts the order of SetDest, which applies DT updates. The order impacts collectChildrenInLoop, which in turn impacts the we process BBs in LICM. And this in turn impacts the order in which we perform alias queries. If the order is not deterministic, we sometimes get different NumNoAlias statistic counts for the same input, and possibly also different IR, although I have not confirmed the latter. Compile-time impact is neutral: https://llvm-compile-time-tracker.com/compare.php?from=77710f14202a8684e12d68d08d2cd3738bbd0e1d&to=066ac6284041aac454c8ffa2894b866acbf96fd3&stat=instructions:u On interesting change to highlight for stage1-O3, although this is probably just noise : ClamAV 55233M 55190M (-0.08%) PR: https://github.com/llvm/llvm-project/pull/188821 --- llvm/lib/Transforms/Utils/LoopPeel.cpp | 3 ++- llvm/lib/Transforms/Utils/LoopUnroll.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Transforms/Utils/LoopPeel.cpp b/llvm/lib/Transforms/Utils/LoopPeel.cpp index 91737b5c30533..4c67d5a9ae680 100644 --- a/llvm/lib/Transforms/Utils/LoopPeel.cpp +++ b/llvm/lib/Transforms/Utils/LoopPeel.cpp @@ -11,6 +11,7 @@ #include "llvm/Transforms/Utils/LoopPeel.h" #include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/MapVector.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/Analysis/Loads.h" @@ -1121,7 +1122,7 @@ void llvm::peelLoop(Loop *L, unsigned PeelCount, bool PeelLast, LoopInfo *LI, // later. Immediate dominator of such block might change, because we add more // routes which can lead to the exit: we can reach it from the peeled // iterations too. - DenseMap<BasicBlock *, BasicBlock *> NonLoopBlocksIDom; + MapVector<BasicBlock *, BasicBlock *> NonLoopBlocksIDom; for (auto *BB : L->blocks()) { auto *BBDomNode = DT.getNode(BB); SmallVector<BasicBlock *, 16> ChildrenToUpdate; diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp index 6a2ccbea996bf..ab35d217f0d93 100644 --- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnroll.cpp @@ -17,6 +17,7 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/MapVector.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/ScopedHashTable.h" #include "llvm/ADT/SetVector.h" @@ -515,7 +516,7 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI, BasicBlock *FirstExitingBlock = nullptr; SmallVector<BasicBlock *> ExitingBlocks; }; - DenseMap<BasicBlock *, ExitInfo> ExitInfos; + MapVector<BasicBlock *, ExitInfo> ExitInfos; SmallVector<BasicBlock *, 4> ExitingBlocks; L->getExitingBlocks(ExitingBlocks); for (auto *ExitingBlock : ExitingBlocks) {
