You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-lang/julia/files/julia-1.6.5-llvm_13_compat_...

81 lines
2.8 KiB

This patch is from julialang repository:
https://github.com/JuliaLang/julia/commit/47f9139e.patch
but reference comes form ARCH Linux juia package
https://github.com/archlinux/svntogit-community/tree/packages/julia/trunk
From 47f9139e88917813cb7beee5e690c48c2ac65de4 Mon Sep 17 00:00:00 2001
From: Xuanda Yang <th3charlie@gmail.com>
Date: Wed, 9 Jun 2021 22:35:14 +0800
Subject: [PATCH] codegen: replace deprecated llvm::VectorType::getNumElements
with new APIs (#41144)
---
src/llvm-late-gc-lowering.cpp | 29 ++++++++++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp
index 50015045151b..4df303462d96 100644
--- a/src/llvm-late-gc-lowering.cpp
+++ b/src/llvm-late-gc-lowering.cpp
@@ -396,8 +396,14 @@ CountTrackedPointers::CountTrackedPointers(Type *T) {
}
if (isa<ArrayType>(T))
count *= cast<ArrayType>(T)->getNumElements();
- else if (isa<VectorType>(T))
+ else if (isa<VectorType>(T)) {
+#if JL_LLVM_VERSION >= 120000
+ ElementCount EC = cast<VectorType>(T)->getElementCount();
+ count *= EC.getKnownMinValue();
+#else
count *= cast<VectorType>(T)->getNumElements();
+#endif
+ }
}
if (count == 0)
all = false;
@@ -408,8 +414,14 @@ unsigned getCompositeNumElements(Type *T) {
return ST->getNumElements();
else if (auto *AT = dyn_cast<ArrayType>(T))
return AT->getNumElements();
- else
+ else {
+#if JL_LLVM_VERSION >= 120000
+ ElementCount EC = cast<VectorType>(T)->getElementCount();
+ return EC.getKnownMinValue();
+#else
return cast<VectorType>(T)->getNumElements();
+#endif
+ }
}
// Walk through a Type, and record the element path to every tracked value inside
@@ -625,8 +637,14 @@ void LateLowerGCFrame::LiftSelect(State &S, SelectInst *SI) {
}
std::vector<int> Numbers;
unsigned NumRoots = 1;
- if (auto VTy = dyn_cast<VectorType>(SI->getType()))
+ if (auto VTy = dyn_cast<VectorType>(SI->getType())) {
+#if JL_LLVM_VERSION >= 120000
+ ElementCount EC = VTy->getElementCount();
+ Numbers.resize(EC.getKnownMinValue(), -1);
+#else
Numbers.resize(VTy->getNumElements(), -1);
+#endif
+ }
else
assert(isa<PointerType>(SI->getType()) && "unimplemented");
assert(!isTrackedValue(SI));
@@ -686,7 +704,12 @@ void LateLowerGCFrame::LiftSelect(State &S, SelectInst *SI) {
assert(NumRoots == 1);
int Number = Numbers[0];
Numbers.resize(0);
+#if JL_LLVM_VERSION >= 120000
+ ElementCount EC = VTy->getElementCount();
+ Numbers.resize(EC.getKnownMinValue(), Number);
+#else
Numbers.resize(VTy->getNumElements(), Number);
+#endif
}
}
if (!isa<PointerType>(SI->getType()))