aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2023-06-19 18:44:06 +0000
committerBrooks Davis <brooks@FreeBSD.org>2023-06-23 21:01:43 +0000
commit5e81b0383c515efab7ffba838969f2cbb2656082 (patch)
tree384b38b700b9f28fefb763baa581891ae214a659
parent880ad3b00f273d47831d183ac44f3b3074d0875a (diff)
downloadports-5e81b0383c515efab7ffba838969f2cbb2656082.tar.gz
ports-5e81b0383c515efab7ffba838969f2cbb2656082.zip
devel/llvm16: update to 16.0.6 release
Change the lite flavor to default to BE_FREEBSD rather than BE_NATIVE to allow its use in cross-build CI pipelines. Backport fix for LLVM bug 61396. [0] This fixes miscompilation of gcc on 32-bit arm. PR: 271992 [0] Reported by: jfc@mit.edu [0] (cherry picked from commit 50593575e96b94f5de485c6216a870db44e487e0)
-rw-r--r--devel/llvm16/Makefile4
-rw-r--r--devel/llvm16/distinfo6
-rw-r--r--devel/llvm16/files/patch-backport-962c306a142
3 files changed, 47 insertions, 5 deletions
diff --git a/devel/llvm16/Makefile b/devel/llvm16/Makefile
index 57bdeb3b7e61..025003aef3a9 100644
--- a/devel/llvm16/Makefile
+++ b/devel/llvm16/Makefile
@@ -1,5 +1,5 @@
PORTNAME= llvm
-DISTVERSION= 16.0.5
+DISTVERSION= 16.0.6
PORTREVISION= 0
CATEGORIES= devel lang
MASTER_SITES= https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION:S/rc/-rc/}/ \
@@ -99,7 +99,7 @@ OPTIONS_EXCLUDE_armv7= COMPILER_RT
OPTIONS_SUB= yes
.if ${FLAVOR:Mlite}
-OPTIONS_DEFAULT+= BE_NATIVE
+OPTIONS_DEFAULT+= BE_FREEBSD
.else
OPTIONS_DEFINE+= EXTRAS FLANG LIT LLDB MLIR OPENMP PYCLANG
OPTIONS_DEFINE_amd64= GOLD
diff --git a/devel/llvm16/distinfo b/devel/llvm16/distinfo
index 0169bda7d36f..95efc23fe3c1 100644
--- a/devel/llvm16/distinfo
+++ b/devel/llvm16/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1685986713
-SHA256 (llvm-project-16.0.5.src.tar.xz) = 37f540124b9cfd4680666e649f557077f9937c9178489cea285a672e714b2863
-SIZE (llvm-project-16.0.5.src.tar.xz) = 118000368
+TIMESTAMP = 1686758340
+SHA256 (llvm-project-16.0.6.src.tar.xz) = ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e
+SIZE (llvm-project-16.0.6.src.tar.xz) = 118013488
diff --git a/devel/llvm16/files/patch-backport-962c306a1 b/devel/llvm16/files/patch-backport-962c306a1
new file mode 100644
index 000000000000..1b37decff88b
--- /dev/null
+++ b/devel/llvm16/files/patch-backport-962c306a1
@@ -0,0 +1,42 @@
+commit 8e1222aee4c657e572b7d7841daf7f48ec6ba035
+Author: John F. Carr <jfc@mit.edu>
+Date: Tue Jun 13 14:10:00 2023 -0400
+
+ LLVM commit 962c306a11d0a21c884c12e18825b8a41ba1bd7d
+
+diff --git a/contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/contrib/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+index 5fd4e45d80fb..9d95cb25efa0 100644
+--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
++++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+@@ -4627,11 +4627,17 @@ void LoopVectorizationCostModel::collectLoopUniforms(ElementCount VF) {
+ WideningDecision == CM_Interleave);
+ };
+
+-
+ // Returns true if Ptr is the pointer operand of a memory access instruction
+- // I, and I is known to not require scalarization.
++ // I, I is known to not require scalarization, and the pointer is not also
++ // stored.
+ auto isVectorizedMemAccessUse = [&](Instruction *I, Value *Ptr) -> bool {
+- return getLoadStorePointerOperand(I) == Ptr && isUniformDecision(I, VF);
++ auto GetStoredValue = [I]() -> Value * {
++ if (!isa<StoreInst>(I))
++ return nullptr;
++ return I->getOperand(0);
++ };
++ return getLoadStorePointerOperand(I) == Ptr && isUniformDecision(I, VF) &&
++ GetStoredValue() != Ptr;
+ };
+
+ // Holds a list of values which are known to have at least one uniform use.
+@@ -4679,8 +4685,8 @@ void LoopVectorizationCostModel::collectLoopUniforms(ElementCount VF) {
+ if (isa<LoadInst>(I) && Legal->isUniformMemOp(I))
+ addToWorklistIfAllowed(&I);
+
+- if (isUniformDecision(&I, VF)) {
+- assert(isVectorizedMemAccessUse(&I, Ptr) && "consistency check");
++ if (isVectorizedMemAccessUse(&I, Ptr)) {
++ assert(isUniformDecision(&I, VF) && "consistency check");
+ HasUniformUse.insert(Ptr);
+ }
+ }