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 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(T)) count *= cast(T)->getNumElements(); - else if (isa(T)) + else if (isa(T)) { +#if JL_LLVM_VERSION >= 120000 + ElementCount EC = cast(T)->getElementCount(); + count *= EC.getKnownMinValue(); +#else count *= cast(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(T)) return AT->getNumElements(); - else + else { +#if JL_LLVM_VERSION >= 120000 + ElementCount EC = cast(T)->getElementCount(); + return EC.getKnownMinValue(); +#else return cast(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 Numbers; unsigned NumRoots = 1; - if (auto VTy = dyn_cast(SI->getType())) + if (auto VTy = dyn_cast(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(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(SI->getType()))