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-19 18:44:06 +0000
commit50593575e96b94f5de485c6216a870db44e487e0 (patch)
treea0a80754d77c89b74cb8cb357a391bb16617854f
parentf67260aafd1cfb5eb91cfc72df80a00ef8b87e13 (diff)
downloadports-50593575e96b94f5de485c6216a870db44e487e0.tar.gz
ports-50593575e96b94f5de485c6216a870db44e487e0.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]
-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 90aa66b02610..6fe1894268ad 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/}/ \
@@ -100,7 +100,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);
+ }
+ }