git: 50593575e96b - main - devel/llvm16: update to 16.0.6 release
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 19 Jun 2023 18:44:21 UTC
The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/ports/commit/?id=50593575e96b94f5de485c6216a870db44e487e0 commit 50593575e96b94f5de485c6216a870db44e487e0 Author: Brooks Davis <brooks@FreeBSD.org> AuthorDate: 2023-06-19 18:44:06 +0000 Commit: Brooks Davis <brooks@FreeBSD.org> CommitDate: 2023-06-19 18:44:06 +0000 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] --- devel/llvm16/Makefile | 4 +-- devel/llvm16/distinfo | 6 ++--- devel/llvm16/files/patch-backport-962c306a1 | 42 +++++++++++++++++++++++++++++ 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); + } + }