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) {

Reply via email to