Skip to content

Commit

Permalink
devel/llvm16: update to 16.0.6 release
Browse files Browse the repository at this point in the history
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 5059357)
  • Loading branch information
brooksdavis committed Jun 23, 2023
1 parent 880ad3b commit 5e81b03
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 5 deletions.
4 changes: 2 additions & 2 deletions 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/}/ \
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions 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
42 changes: 42 additions & 0 deletions 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);
}
}

0 comments on commit 5e81b03

Please sign in to comment.