From cd54e9761bd2e03a354a5a4aea5ae0aa9e858fac Mon Sep 17 00:00:00 2001 From: Zentrik Date: Thu, 6 Mar 2025 08:41:23 +0000 Subject: [PATCH 01/26] [DONOTMERGE] Switch llvm source build to v20 --- deps/llvm.version | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deps/llvm.version b/deps/llvm.version index 194528a2643df..8aa465e3bdd28 100644 --- a/deps/llvm.version +++ b/deps/llvm.version @@ -5,11 +5,11 @@ LLVM_JLL_NAME := libLLVM LLVM_ASSERT_JLL_VER := 19.1.7+1 ## source build # Version number of LLVM -LLVM_VER := 19.1.7 +LLVM_VER := 20.1.0 # Git branch name in `LLVM_GIT_URL` repository -LLVM_BRANCH=julia-19.1.7-1 +LLVM_BRANCH=281432c71c3190a2c3a0a29cdac98c195f9ca52b # Git ref in `LLVM_GIT_URL` repository -LLVM_SHA1=julia-19.1.7-1 +LLVM_SHA1=281432c71c3190a2c3a0a29cdac98c195f9ca52b ## Following options are used to automatically fetch patchset from Julia's fork. This is ## useful if you want to build an external LLVM while still applying Julia's patches. From 9608c1836f44705302e5a7dbdeff53b03b53bd5a Mon Sep 17 00:00:00 2001 From: Zentrik Date: Thu, 6 Mar 2025 09:06:49 +0000 Subject: [PATCH 02/26] Bump to rebased llvm 20 --- deps/llvm.version | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/llvm.version b/deps/llvm.version index 8aa465e3bdd28..e052fb124b9c0 100644 --- a/deps/llvm.version +++ b/deps/llvm.version @@ -7,9 +7,9 @@ LLVM_ASSERT_JLL_VER := 19.1.7+1 # Version number of LLVM LLVM_VER := 20.1.0 # Git branch name in `LLVM_GIT_URL` repository -LLVM_BRANCH=281432c71c3190a2c3a0a29cdac98c195f9ca52b +LLVM_BRANCH=9191f0d890728ba959cb2b2a76e3ab914069cabc # Git ref in `LLVM_GIT_URL` repository -LLVM_SHA1=281432c71c3190a2c3a0a29cdac98c195f9ca52b +LLVM_SHA1=9191f0d890728ba959cb2b2a76e3ab914069cabc ## Following options are used to automatically fetch patchset from Julia's fork. This is ## useful if you want to build an external LLVM while still applying Julia's patches. From c69a305ce1df2d298e046d296e32f8796c46d74d Mon Sep 17 00:00:00 2001 From: Zentrik Date: Thu, 6 Mar 2025 09:12:51 +0000 Subject: [PATCH 03/26] Cherry-pick "Fix late gc lowering pass for vector intrinsics #55864" --- src/llvm-late-gc-lowering.cpp | 83 +++++++++++++++++++++++--------- test/llvmpasses/image-codegen.jl | 2 +- test/llvmpasses/late-lower-gc.ll | 15 ++++++ 3 files changed, 75 insertions(+), 25 deletions(-) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index 4a5741fed05da..a871b29265b34 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -1,6 +1,8 @@ // This file is a part of Julia. License is MIT: https://julialang.org/license #include "llvm-gc-interface-passes.h" +#include "llvm/IR/Intrinsics.h" +#include "llvm/Support/Casting.h" #define DEBUG_TYPE "late_lower_gcroot" @@ -171,39 +173,54 @@ static std::pair FindBaseValue(const State &S, Value *V, bool UseCac (void)LI; break; } - else if (auto II = dyn_cast(CurrentV)) { + else if (dyn_cast(CurrentV) != nullptr && + (cast(CurrentV)->getIntrinsicID() == Intrinsic::masked_load || + cast(CurrentV)->getIntrinsicID() == Intrinsic::masked_gather)) { // Some intrinsics behave like LoadInst followed by a SelectInst // This should never happen in a derived addrspace (since those cannot be stored to memory) // so we don't need to lift these operations, but we do need to check if it's loaded and continue walking the base pointer - if (II->getIntrinsicID() == Intrinsic::masked_load || - II->getIntrinsicID() == Intrinsic::masked_gather) { - if (auto VTy = dyn_cast(II->getType())) { - if (hasLoadedTy(VTy->getElementType())) { - Value *Mask = II->getOperand(2); - Value *Passthrough = II->getOperand(3); - if (!isa(Mask) || !cast(Mask)->isAllOnesValue()) { - assert(isa(Passthrough) && "unimplemented"); - (void)Passthrough; + auto II = dyn_cast(CurrentV); + if (auto VTy = dyn_cast(II->getType())) { + if (hasLoadedTy(VTy->getElementType())) { + Value *Mask = II->getOperand(2); + Value *Passthrough = II->getOperand(3); + if (!isa(Mask) || !cast(Mask)->isAllOnesValue()) { + assert(isa(Passthrough) && "unimplemented"); + (void)Passthrough; + } + CurrentV = II->getOperand(0); + if (II->getIntrinsicID() == Intrinsic::masked_load) { + fld_idx = -1; + if (!isSpecialPtr(CurrentV->getType())) { + CurrentV = ConstantPointerNull::get(PointerType::get(V->getContext(), 0)); } - CurrentV = II->getOperand(0); - if (II->getIntrinsicID() == Intrinsic::masked_load) { - fld_idx = -1; - if (!isSpecialPtr(CurrentV->getType())) { + } else { + if (auto VTy2 = dyn_cast(CurrentV->getType())) { + if (!isSpecialPtr(VTy2->getElementType())) { CurrentV = ConstantPointerNull::get(PointerType::get(V->getContext(), 0)); - } - } else { - if (auto VTy2 = dyn_cast(CurrentV->getType())) { - if (!isSpecialPtr(VTy2->getElementType())) { - CurrentV = ConstantPointerNull::get(PointerType::get(V->getContext(), 0)); - fld_idx = -1; - } + fld_idx = -1; } } - continue; } + continue; + } + } + // In general a load terminates a walk + break; + } + else if (dyn_cast(CurrentV) != nullptr && cast(CurrentV)->getIntrinsicID() == Intrinsic::vector_extract) { + auto II = dyn_cast(CurrentV); + if (auto VTy = dyn_cast(II->getType())) { + if (hasLoadedTy(VTy->getElementType())) { + Value *Idx = II->getOperand(1); + if (!isa(Idx)) { + assert(isa(Idx) && "unimplemented"); + (void)Idx; + } + CurrentV = II->getOperand(0); + fld_idx = -1; + continue; } - // In general a load terminates a walk - break; } } else if (auto CI = dyn_cast(CurrentV)) { @@ -530,6 +547,20 @@ SmallVector LateLowerGCFrame::NumberAllBase(State &S, Value *CurrentV) { Numbers = NumberAll(S, IEI->getOperand(0)); int ElNumber = Number(S, IEI->getOperand(1)); Numbers[idx] = ElNumber; + } else if (dyn_cast(CurrentV) != nullptr && dyn_cast(CurrentV)->getIntrinsicID() == Intrinsic::vector_insert) { + auto *VII = cast(CurrentV); + // Vector insert is a bit like a shuffle so use the same approach + SmallVector Numbers1 = NumberAll(S, VII->getOperand(0)); + SmallVector Numbers2 = NumberAll(S, VII->getOperand(1)); + unsigned first_idx = cast(VII->getOperand(2))->getZExtValue(); + for (unsigned i = 0; i < Numbers1.size(); ++i) { + if (i < first_idx) + Numbers.push_back(Numbers1[i]); + else if (i - first_idx < Numbers2.size()) + Numbers.push_back(Numbers2[i - first_idx]); + else + Numbers.push_back(Numbers1[i]); + } } else if (auto *IVI = dyn_cast(CurrentV)) { Numbers = NumberAll(S, IVI->getAggregateOperand()); auto Tracked = TrackCompositeType(IVI->getType()); @@ -1206,6 +1237,10 @@ State LateLowerGCFrame::LocalScan(Function &F) { } } } + if (II->getIntrinsicID() == Intrinsic::vector_extract || II->getIntrinsicID() == Intrinsic::vector_insert) { + // These are not real defs + continue; + } } auto callee = CI->getCalledFunction(); if (callee && callee == typeof_func) { diff --git a/test/llvmpasses/image-codegen.jl b/test/llvmpasses/image-codegen.jl index 35e5add2de601..d594c02a4392e 100644 --- a/test/llvmpasses/image-codegen.jl +++ b/test/llvmpasses/image-codegen.jl @@ -2,7 +2,7 @@ # RUN: export JULIA_LLVM_ARGS="--print-before=loop-vectorize --print-module-scope" # RUN: rm -rf %t # RUN: mkdir %t -# RUN: julia --image-codegen --startup-file=no %s 2> %t/output.txt +# RUN: julia --image-codegen -t1,0 --startup-file=no %s 2> %t/output.txt # RUN: FileCheck %s < %t/output.txt # COM: checks that global variables compiled in imaging codegen diff --git a/test/llvmpasses/late-lower-gc.ll b/test/llvmpasses/late-lower-gc.ll index 4739fa186ffc7..af71d3c8d2c75 100644 --- a/test/llvmpasses/late-lower-gc.ll +++ b/test/llvmpasses/late-lower-gc.ll @@ -164,6 +164,21 @@ define {} addrspace(10)* @gclift_switch({} addrspace(13)* addrspace(10)* %input, ret {} addrspace(10)* %ret } +; Shouldn't hang +define void @vector_insert(<4 x {} addrspace(10)* > %0, <2 x {} addrspace(10)* > %1) { +top: + %pgcstack = call {}*** @julia.get_pgcstack() + %2 = call <4 x {} addrspace(10)*> @llvm.vector.insert.v4p10.v2p10(<4 x {} addrspace(10)*> %0, <2 x {} addrspace(10)*> %1, i64 2) + ret void +} + +define void @vector_extract(<4 x {} addrspace(10)* > %0, <2 x {} addrspace(10)* > %1) { +top: + %pgcstack = call {}*** @julia.get_pgcstack() + %2 = call <2 x {} addrspace(10)*> @llvm.vector.extract.v2p10.v4p10(<4 x {} addrspace(10)* > %0, i64 2) + ret void +} + define void @decayar([2 x {} addrspace(10)* addrspace(11)*] %ar) { %v2 = call {}*** @julia.get_pgcstack() %e0 = extractvalue [2 x {} addrspace(10)* addrspace(11)*] %ar, 0 From b9e59af01269239c63043d8b135c2aa2a6e0d19d Mon Sep 17 00:00:00 2001 From: Zentrik Date: Mon, 10 Mar 2025 13:43:28 +0000 Subject: [PATCH 04/26] Try bumping cmake before building llvm --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 10c9936be1d9a..39004056aaca1 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) +$(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From 51065e4d87cebf08bdedb53e7955119b4f05211a Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 10:08:34 +0700 Subject: [PATCH 05/26] Try building from source on ci --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 39004056aaca1..fa02503d7f5e9 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) +USE_BINARYBUILDER_LLVM=0 include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From dd14f86ccbb9f24ac0e995604c61c6054a593e0d Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 10:15:33 +0700 Subject: [PATCH 06/26] try again --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fa02503d7f5e9..203ab169e4c66 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) -USE_BINARYBUILDER_LLVM=0 +USE_BINARYBUILDER_LLVM := 0 include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From be2a97b1183aa27a0f889ce285f88df3bee91d80 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 10:19:16 +0700 Subject: [PATCH 07/26] try try again --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 203ab169e4c66..eda5a47e3aa27 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) -USE_BINARYBUILDER_LLVM := 0 +$(shell echo "USE_BINARYBUILDER_LLVM = 0" >> $(JULIAHOME)/Make.user) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From 96b585a17a0fbab4eafc926673f7935a3fe65f9f Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 10:23:04 +0700 Subject: [PATCH 08/26] try try try again --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eda5a47e3aa27..61b7d8bdcd35d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) -$(shell echo "USE_BINARYBUILDER_LLVM = 0" >> $(JULIAHOME)/Make.user) +$(shell echo "USE_BINARYBUILDER_LLVM = 0\nTAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From f2c98babc7402c0bbc851f0450953d97ce8d44af Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 10:26:06 +0700 Subject: [PATCH 09/26] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 61b7d8bdcd35d..68dca5aa014e3 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) -$(shell echo "USE_BINARYBUILDER_LLVM = 0\nTAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) +$(shell echo "USE_BINARYBUILDER_LLVM = 0\noverride TAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From 102014d168c4741185552d2f1e78e426caa6c85c Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:15:54 +0000 Subject: [PATCH 10/26] Adapt to "[ORC] Move EHFrameRegistrationPlugin into its own header + source file. NFC. " https://github.com/llvm/llvm-project/commit/6d12b954a7df11e32acf110950d88bac282079b8 --- src/jitlayers.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/jitlayers.cpp b/src/jitlayers.cpp index 3666e61fd2813..fcdc4212b0da6 100644 --- a/src/jitlayers.cpp +++ b/src/jitlayers.cpp @@ -15,7 +15,8 @@ #include #include #if JL_LLVM_VERSION >= 200000 -#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h" +#include +#include #endif #if JL_LLVM_VERSION >= 180000 #include From 35b8e3d7d56cdfcee3a8f445b1a03ee03cad2c9c Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:16:14 +0000 Subject: [PATCH 11/26] Fix deprecation --- src/codegen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index b33c50ca08fa4..54b865773b5df 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -5824,7 +5824,7 @@ static void emit_phinode_assign(jl_codectx_t &ctx, ssize_t idx, jl_value_t *r) unsigned nb = jl_datatype_size(phiType); dest = emit_static_alloca(ctx, nb, align); phi = cast(dest->clone()); - phi->insertBefore(dest); + phi->insertBefore(dest.getIterator()); ctx.builder.CreateMemCpy(phi, align, dest, align, nb, false); ctx.builder.CreateLifetimeEnd(dest); } From 1bc6f8149883a07071026aaa64702fe94a91b174 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:16:22 +0000 Subject: [PATCH 12/26] Add another override --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 68dca5aa014e3..89884b0e98c20 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) -$(shell echo "USE_BINARYBUILDER_LLVM = 0\noverride TAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) +$(shell echo "override USE_BINARYBUILDER_LLVM = 0\noverride TAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From ae342f3d13a9f082985b139ef6a34d2851cdd3a4 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:20:37 +0000 Subject: [PATCH 13/26] Fix if on unsupported platform --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 89884b0e98c20..4497fea81d95c 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) -$(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null) +$(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null 2>&1) $(shell echo "override USE_BINARYBUILDER_LLVM = 0\noverride TAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME From a25b7599a7fb8114e790a1b4769214ac24c6eb77 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:28:22 +0000 Subject: [PATCH 14/26] Hack --- deps/tools/jlchecksum | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deps/tools/jlchecksum b/deps/tools/jlchecksum index 9945ec89e6bda..2bf758eb56269 100755 --- a/deps/tools/jlchecksum +++ b/deps/tools/jlchecksum @@ -63,10 +63,10 @@ find_checksum() fi done if [ ! -f "$DEPSDIR/checksums/$BASENAME/$CHECKSUM_TYPE" ]; then - if [ "${TAGGED_RELEASE_BANNER:-}" ]; then - echo "WARNING: $CHECKSUM_TYPE checksum for $BASENAME not found in deps/checksums/, failing release build." >&2 - exit 3 - fi + # if [ "${TAGGED_RELEASE_BANNER:-}" ]; then + # echo "WARNING: $CHECKSUM_TYPE checksum for $BASENAME not found in deps/checksums/, failing release build." >&2 + # exit 3 + # fi echo "WARNING: $CHECKSUM_TYPE checksum for $BASENAME not found in deps/checksums/, autogenerating..." >&2 # Generate as many checksum types as we can From c2182028294dba1806e6b43d9ee0002d184ab305 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:32:05 +0000 Subject: [PATCH 15/26] Fix bug --- deps/llvm.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deps/llvm.mk b/deps/llvm.mk index 09dd4f187d611..8c1b490bb7ba7 100644 --- a/deps/llvm.mk +++ b/deps/llvm.mk @@ -75,7 +75,9 @@ LLVM_CMAKE := LLVM_CMAKE += -DLLVM_ENABLE_PROJECTS="$(LLVM_ENABLE_PROJECTS)" LLVM_CMAKE += -DLLVM_EXTERNAL_PROJECTS="$(LLVM_EXTERNAL_PROJECTS)" -LLVM_CMAKE += -DLLVM_ENABLE_RUNTIMES="$(LLVM_ENABLE_RUNTIMES)" +ifneq ($(LLVM_ENABLE_RUNTIMES),) + LLVM_CMAKE += -DLLVM_ENABLE_RUNTIMES="$(LLVM_ENABLE_RUNTIMES)" +endif ifeq ($(USE_RV),1) LLVM_CMAKE += -DLLVM_EXTERNAL_RV_SOURCE_DIR=$(LLVM_MONOSRC_DIR)/rv From bff23099ec0849bf8b50275778ac319dcc5f1f5f Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:39:28 +0000 Subject: [PATCH 16/26] Try Fix bug --- deps/llvm.mk | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/deps/llvm.mk b/deps/llvm.mk index 8c1b490bb7ba7..453efc5f072f8 100644 --- a/deps/llvm.mk +++ b/deps/llvm.mk @@ -39,7 +39,7 @@ LLVM_EXTERNAL_PROJECTS := LLVM_ENABLE_RUNTIMES := ifeq ($(BUILD_LLVM_CLANG), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);clang -LLVM_ENABLE_RUNTIMES := $(LLVM_ENABLE_RUNTIMES);compiler-rt +LLVM_ENABLE_RUNTIMES := compiler-rt;$(LLVM_ENABLE_RUNTIMES) endif ifeq ($(USE_POLLY), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);polly @@ -54,7 +54,7 @@ ifeq ($(USE_RV), 1) LLVM_EXTERNAL_PROJECTS := $(LLVM_EXTERNAL_PROJECTS);rv endif ifeq ($(BUILD_LIBCXX), 1) -LLVM_ENABLE_RUNTIMES := $(LLVM_ENABLE_RUNTIMES);libcxx;libcxxabi +LLVM_ENABLE_RUNTIMES := libcxx;libcxxabi;$(LLVM_ENABLE_RUNTIMES) endif ifeq ($(BUILD_LLD), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);lld @@ -75,9 +75,7 @@ LLVM_CMAKE := LLVM_CMAKE += -DLLVM_ENABLE_PROJECTS="$(LLVM_ENABLE_PROJECTS)" LLVM_CMAKE += -DLLVM_EXTERNAL_PROJECTS="$(LLVM_EXTERNAL_PROJECTS)" -ifneq ($(LLVM_ENABLE_RUNTIMES),) - LLVM_CMAKE += -DLLVM_ENABLE_RUNTIMES="$(LLVM_ENABLE_RUNTIMES)" -endif +LLVM_CMAKE += -DLLVM_ENABLE_RUNTIMES="$(LLVM_ENABLE_RUNTIMES)" ifeq ($(USE_RV),1) LLVM_CMAKE += -DLLVM_EXTERNAL_RV_SOURCE_DIR=$(LLVM_MONOSRC_DIR)/rv From eeb89f642cf2b1f78d6657b095b38f4752bf836f Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:46:43 +0000 Subject: [PATCH 17/26] Try again --- deps/llvm.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/llvm.mk b/deps/llvm.mk index 453efc5f072f8..afd24362db380 100644 --- a/deps/llvm.mk +++ b/deps/llvm.mk @@ -39,7 +39,7 @@ LLVM_EXTERNAL_PROJECTS := LLVM_ENABLE_RUNTIMES := ifeq ($(BUILD_LLVM_CLANG), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);clang -LLVM_ENABLE_RUNTIMES := compiler-rt;$(LLVM_ENABLE_RUNTIMES) +LLVM_ENABLE_RUNTIMES := $(LLVM_ENABLE_RUNTIMES);compiler-rt endif ifeq ($(USE_POLLY), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);polly @@ -54,12 +54,13 @@ ifeq ($(USE_RV), 1) LLVM_EXTERNAL_PROJECTS := $(LLVM_EXTERNAL_PROJECTS);rv endif ifeq ($(BUILD_LIBCXX), 1) -LLVM_ENABLE_RUNTIMES := libcxx;libcxxabi;$(LLVM_ENABLE_RUNTIMES) +LLVM_ENABLE_RUNTIMES := $(LLVM_ENABLE_RUNTIMES);libcxx;libcxxabi endif ifeq ($(BUILD_LLD), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);lld endif +LLVM_ENABLE_RUNTIMES := $(patsubst ;%,%,$(LLVM_ENABLE_RUNTIMES)) # Remove ; if it's the first character LLVM_LIB_FILE := libLLVMCodeGen.a From 0641b4c561df96b8e58ed1e89367fecffb33ed44 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 04:52:59 +0000 Subject: [PATCH 18/26] Try again --- deps/llvm.mk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/deps/llvm.mk b/deps/llvm.mk index afd24362db380..aa9bf038edf9c 100644 --- a/deps/llvm.mk +++ b/deps/llvm.mk @@ -60,7 +60,10 @@ ifeq ($(BUILD_LLD), 1) LLVM_ENABLE_PROJECTS := $(LLVM_ENABLE_PROJECTS);lld endif -LLVM_ENABLE_RUNTIMES := $(patsubst ;%,%,$(LLVM_ENABLE_RUNTIMES)) # Remove ; if it's the first character +# Remove ; if it's the first character +ifneq ($(LLVM_ENABLE_RUNTIMES),) + LLVM_ENABLE_RUNTIMES := $(patsubst ;%,%,$(LLVM_ENABLE_RUNTIMES)) +endif LLVM_LIB_FILE := libLLVMCodeGen.a From 27c6404cab445658709bc698bc1d14ceaacf507c Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 05:11:38 +0000 Subject: [PATCH 19/26] Fix typo --- src/codegen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 54b865773b5df..a455437ccccde 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -5824,7 +5824,7 @@ static void emit_phinode_assign(jl_codectx_t &ctx, ssize_t idx, jl_value_t *r) unsigned nb = jl_datatype_size(phiType); dest = emit_static_alloca(ctx, nb, align); phi = cast(dest->clone()); - phi->insertBefore(dest.getIterator()); + phi->insertBefore(dest->getIterator()); ctx.builder.CreateMemCpy(phi, align, dest, align, nb, false); ctx.builder.CreateLifetimeEnd(dest); } From 5906ebde317f128cec9223a16bc8ab1a8dae023d Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 05:29:51 +0000 Subject: [PATCH 20/26] Fix another deprecation --- src/llvm-ptls.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm-ptls.cpp b/src/llvm-ptls.cpp index 807d3cb95422d..17f8fcdc25afd 100644 --- a/src/llvm-ptls.cpp +++ b/src/llvm-ptls.cpp @@ -237,7 +237,7 @@ void LowerPTLS::fix_pgcstack_use(CallInst *pgcstack, Function *pgcstack_getter, builder.SetInsertPoint(pgcstack); auto phi = builder.CreatePHI(T_pppjlvalue, 2, "pgcstack"); pgcstack->replaceAllUsesWith(phi); - pgcstack->moveBefore(slowTerm); + pgcstack->moveBefore(slowTerm->getIterator()); // refresh the basic block in the builder builder.SetInsertPoint(pgcstack); auto getter = builder.CreateLoad(T_pgcstack_getter, pgcstack_func_slot); From 7743715913a4a31117649df2b93c2954ac530a46 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 05:51:58 +0000 Subject: [PATCH 21/26] Fix more deprecations --- src/llvm-propagate-addrspaces.cpp | 2 +- src/llvm-ptls.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llvm-propagate-addrspaces.cpp b/src/llvm-propagate-addrspaces.cpp index 55c9e731e1525..fd92cfba1e3eb 100644 --- a/src/llvm-propagate-addrspaces.cpp +++ b/src/llvm-propagate-addrspaces.cpp @@ -289,7 +289,7 @@ bool propagateJuliaAddrspaces(Function &F) { PropagateJuliaAddrspacesVisitor visitor; visitor.visit(F); for (auto it : visitor.ToInsert) - it.first->insertBefore(it.second); + it.first->insertBefore(it.second->getIterator()); for (Instruction *I : visitor.ToDelete) I->eraseFromParent(); visitor.ToInsert.clear(); diff --git a/src/llvm-ptls.cpp b/src/llvm-ptls.cpp index 17f8fcdc25afd..6af6f03fbc3d5 100644 --- a/src/llvm-ptls.cpp +++ b/src/llvm-ptls.cpp @@ -179,7 +179,7 @@ void LowerPTLS::fix_pgcstack_use(CallInst *pgcstack, Function *pgcstack_getter, adoptFunc->copyMetadata(pgcstack_getter, 0); } adopt->setCalledFunction(adoptFunc); - adopt->insertBefore(slowTerm); + adopt->insertBefore(slowTerm->getIterator()); phi->addIncoming(adopt, slowTerm->getParent()); // emit fast branch code builder.SetInsertPoint(fastTerm->getParent()); From 7f646180b81097887a9efe7c0443ce3c791fb0c1 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 13:23:22 +0700 Subject: [PATCH 22/26] Fix another deprecation --- src/llvm-julia-licm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm-julia-licm.cpp b/src/llvm-julia-licm.cpp index 68fe41216bfd4..ffa55ba88bac6 100644 --- a/src/llvm-julia-licm.cpp +++ b/src/llvm-julia-licm.cpp @@ -59,7 +59,7 @@ static void moveInstructionBefore(Instruction &I, Instruction &Dest, MemorySSAUpdater &MSSAU, ScalarEvolution *SE, MemorySSA::InsertionPlace Place = MemorySSA::BeforeTerminator) { - I.moveBefore(&Dest); + I.moveBefore(Dest.getIterator()); if (MSSAU.getMemorySSA()) if (MemoryUseOrDef *OldMemAcc = cast_or_null( MSSAU.getMemorySSA()->getMemoryAccess(&I))) From fbc0c8525ad041a5bfa26e51e5974a9b6a2486d1 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 13:35:05 +0700 Subject: [PATCH 23/26] hopefully last one --- src/llvm-late-gc-lowering.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index a871b29265b34..b8a2854e5db55 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -2407,7 +2407,7 @@ void LateLowerGCFrame::PlaceGCFrameReset(State &S, unsigned R, unsigned MinColor auto slotAddress = CallInst::Create( getOrDeclare(jl_intrinsics::getGCFrameSlot), {GCFrame, ConstantInt::get(Type::getInt32Ty(InsertBefore->getContext()), Colors[R] + MinColorRoot)}, - "gc_slot_addr_" + StringRef(std::to_string(Colors[R] + MinColorRoot)), InsertBefore); + "gc_slot_addr_" + StringRef(std::to_string(Colors[R] + MinColorRoot)), InsertBefore->getIterator()); // Reset the slot to NULL. Value *Val = ConstantPointerNull::get(T_prjlvalue); new StoreInst(Val, slotAddress, InsertBefore); From d8be5c3e86057ce9f6b6d73c5e690fb9c5bb8f61 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 08:59:36 +0000 Subject: [PATCH 24/26] Remove release banner override --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4497fea81d95c..6794621751d3c 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ JULIAHOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) $(shell $(JULIAHOME)/contrib/download_cmake.sh > /dev/null 2>&1) -$(shell echo "override USE_BINARYBUILDER_LLVM = 0\noverride TAGGED_RELEASE_BANNER =" >> $(JULIAHOME)/Make.user) +$(shell echo "override USE_BINARYBUILDER_LLVM = 0" >> $(JULIAHOME)/Make.user) include $(JULIAHOME)/Make.inc # import LLVM_SHARED_LIB_NAME include $(JULIAHOME)/deps/llvm-ver.make From 71290a76a663b69e577ad4dc57a79dbeea2f430d Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 09:00:04 +0000 Subject: [PATCH 25/26] Fix more deprecations --- src/llvm-late-gc-lowering.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index b8a2854e5db55..5bc60abdb923f 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -2410,7 +2410,7 @@ void LateLowerGCFrame::PlaceGCFrameReset(State &S, unsigned R, unsigned MinColor "gc_slot_addr_" + StringRef(std::to_string(Colors[R] + MinColorRoot)), InsertBefore->getIterator()); // Reset the slot to NULL. Value *Val = ConstantPointerNull::get(T_prjlvalue); - new StoreInst(Val, slotAddress, InsertBefore); + new StoreInst(Val, slotAddress, InsertBefore->getIterator()); } void LateLowerGCFrame::PlaceGCFrameStores(State &S, unsigned MinColorRoot, @@ -2463,7 +2463,7 @@ void LateLowerGCFrame::PlaceRootsAndUpdateCalls(ArrayRef Colors, int PreAss getOrDeclare(jl_intrinsics::newGCFrame), {ConstantInt::get(T_int32, 0)}, "gcframe"); - gcframe->insertBefore(&*F->getEntryBlock().begin()); + gcframe->insertBefore(F->getEntryBlock().begin()); auto pushGcframe = CallInst::Create( getOrDeclare(jl_intrinsics::pushGCFrame), @@ -2579,7 +2579,7 @@ void LateLowerGCFrame::PlaceRootsAndUpdateCalls(ArrayRef Colors, int PreAss auto popGcframe = CallInst::Create( getOrDeclare(jl_intrinsics::popGCFrame), {gcframe}); - popGcframe->insertBefore(BB.getTerminator()); + popGcframe->insertBefore(BB.getTerminator().getIterator()); } } } From 88c27278581497581d8fa165d126123ee2bf0ab8 Mon Sep 17 00:00:00 2001 From: Zentrik Date: Tue, 11 Mar 2025 16:32:59 +0700 Subject: [PATCH 26/26] Update src/llvm-late-gc-lowering.cpp --- src/llvm-late-gc-lowering.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm-late-gc-lowering.cpp b/src/llvm-late-gc-lowering.cpp index 5bc60abdb923f..99a8e64ef9a9c 100644 --- a/src/llvm-late-gc-lowering.cpp +++ b/src/llvm-late-gc-lowering.cpp @@ -2579,7 +2579,7 @@ void LateLowerGCFrame::PlaceRootsAndUpdateCalls(ArrayRef Colors, int PreAss auto popGcframe = CallInst::Create( getOrDeclare(jl_intrinsics::popGCFrame), {gcframe}); - popGcframe->insertBefore(BB.getTerminator().getIterator()); + popGcframe->insertBefore(BB.getTerminator()->getIterator()); } } }