From 37679992e137a56519f466ced05d29a0f9e10b03 Mon Sep 17 00:00:00 2001 From: Xuanda Yang Date: Wed, 9 Jun 2021 14:27:10 +0800 Subject: [PATCH 1/2] Replace deprecated VectorType::getNumElements with new APIs when LLVM >= 12.0 --- src/llvm-late-gc-lowering.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index 50015045151bc..5f9f191a15122 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -397,7 +397,12 @@ CountTrackedPointers::CountTrackedPointers(Type *T) { if (isa(T)) count *= cast(T)->getNumElements(); 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; @@ -409,7 +414,12 @@ unsigned getCompositeNumElements(Type *T) { else if (auto *AT = dyn_cast(T)) return AT->getNumElements(); 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 @@ -626,7 +636,12 @@ void LateLowerGCFrame::LiftSelect(State &S, SelectInst *SI) { std::vector Numbers; unsigned NumRoots = 1; 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 +701,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())) From 5e27d4ea4cf8c5df128635d566e163428938d86b Mon Sep 17 00:00:00 2001 From: Xuanda Yang Date: Wed, 9 Jun 2021 14:41:32 +0800 Subject: [PATCH 2/2] fix if-else block --- src/llvm-late-gc-lowering.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index 5f9f191a15122..4df303462d960 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -396,13 +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; @@ -413,13 +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 @@ -635,13 +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));