From 7cfddae7ee4fda792a7272a775ec3676bfefcea7 Mon Sep 17 00:00:00 2001 From: Sam Estep Date: Fri, 1 Aug 2025 15:00:28 -0400 Subject: [PATCH 1/5] Update LLVM from 13.0.1 to 15.0.7 --- cmake/LLVM.cmake | 4 ++-- docs/building.md | 2 +- external/build-llvm.ps1 | 2 +- external/build-llvm.sh | 2 +- source/slang-llvm/slang-llvm.cpp | 5 ++--- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake index d707d360581..153309c17e8 100644 --- a/cmake/LLVM.cmake +++ b/cmake/LLVM.cmake @@ -60,7 +60,7 @@ function(fetch_or_build_slang_llvm) endif() endif() elseif(SLANG_SLANG_LLVM_FLAVOR STREQUAL "USE_SYSTEM_LLVM") - find_package(LLVM 13.0 REQUIRED CONFIG) + find_package(LLVM 15.0 REQUIRED CONFIG) find_package(Clang REQUIRED CONFIG) llvm_target_from_components(llvm-dep filecheck native orcjit) @@ -104,7 +104,7 @@ function(fetch_or_build_slang_llvm) endif() # TODO: Put a check here that libslang-llvm.so doesn't have a 'NEEDED' - # directive for libLLVM-13.so, it's almost certainly going to break at + # directive for libLLVM-15.so, it's almost certainly going to break at # runtime in surprising ways when linked alongside Mesa (or anything else # pulling in libLLVM.so) endif() diff --git a/docs/building.md b/docs/building.md index b8a3429a3f2..4c9b7d25efa 100644 --- a/docs/building.md +++ b/docs/building.md @@ -219,7 +219,7 @@ There are several options for getting llvm-support: the case that a prebuilt binary can't be found then the build will proceed as though `DISABLE` was chosen - Use a system supplied LLVM: `-DSLANG_SLANG_LLVM_FLAVOR=USE_SYSTEM_LLVM`, you - must have llvm-13.0 and a matching libclang installed. It's important that + must have llvm-15.0 and a matching libclang installed. It's important that either: - You don't end up linking to a dynamic libllvm.so, this will almost certainly cause multiple versions of LLVM to be loaded at runtime, diff --git a/external/build-llvm.ps1 b/external/build-llvm.ps1 index ff18ed12a3a..fabd7738227 100644 --- a/external/build-llvm.ps1 +++ b/external/build-llvm.ps1 @@ -55,7 +55,7 @@ $null = Register-EngineEvent PowerShell.Exiting -Action $cleanup # Default values $repo = "https://github.com/llvm/llvm-project" -$branch = "llvmorg-13.0.1" +$branch = "llvmorg-15.0.7" $sourceDir = $tempDir.FullName $installPrefix = "" $config = "Release" diff --git a/external/build-llvm.sh b/external/build-llvm.sh index 0575bf4bfb3..4bbf41417fb 100755 --- a/external/build-llvm.sh +++ b/external/build-llvm.sh @@ -54,7 +54,7 @@ trap cleanup EXIT SIGHUP SIGINT SIGTERM # Options and parsing # repo=https://github.com/llvm/llvm-project -branch=llvmorg-13.0.1 +branch=llvmorg-15.0.7 source_dir=$temp_dir install_prefix= config=Release diff --git a/source/slang-llvm/slang-llvm.cpp b/source/slang-llvm/slang-llvm.cpp index 2860874b5e8..81d7a9cf600 100644 --- a/source/slang-llvm/slang-llvm.cpp +++ b/source/slang-llvm/slang-llvm.cpp @@ -28,7 +28,6 @@ #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" #include "llvm/Support/Signals.h" -#include "llvm/Support/TargetRegistry.h" #include "llvm/Support/TargetSelect.h" #include "llvm/Support/TimeProfiler.h" #include "llvm/Support/Timer.h" @@ -239,12 +238,12 @@ void* LLVMJITSharedLibrary::findSymbolAddressByName(char const* name) static void _ensureSufficientStack() {} -static void _llvmErrorHandler(void* userData, const std::string& message, bool genCrashDiag) +static void _llvmErrorHandler(void* userData, const char* message, bool genCrashDiag) { // DiagnosticsEngine& diags = *static_cast(userData); // diags.Report(diag::err_fe_error_backend) << message; - printf("Clang/LLVM fatal error: %s\n", message.c_str()); + printf("Clang/LLVM fatal error: %s\n", message); // Run the interrupt handlers to make sure any special cleanups get done, in // particular that we remove files registered with RemoveFileOnSignal. From 2e48123e36cec3a62409bc80a348d02e96189a0a Mon Sep 17 00:00:00 2001 From: Sam Estep Date: Fri, 1 Aug 2025 15:43:50 -0400 Subject: [PATCH 2/5] Fix `setLangDefaults` usage --- source/slang-llvm/slang-llvm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/slang-llvm/slang-llvm.cpp b/source/slang-llvm/slang-llvm.cpp index 81d7a9cf600..ef11fec5263 100644 --- a/source/slang-llvm/slang-llvm.cpp +++ b/source/slang-llvm/slang-llvm.cpp @@ -784,9 +784,9 @@ SlangResult LLVMDownstreamCompiler::compile( includes.push_back(includePath.begin()); } - clang::CompilerInvocation::setLangDefaults( + clang::LangOptions::setLangDefaults( *opts, - inputKind, + inputKind.getLanguage(), targetTriple, includes, langStd); From 332edaefe3c3b2fa9f31e93d2218ddcd7ba883c9 Mon Sep 17 00:00:00 2001 From: Sam Estep Date: Fri, 1 Aug 2025 15:52:35 -0400 Subject: [PATCH 3/5] Fix `LLJIT::lookup` usage --- source/slang-llvm/slang-llvm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/slang-llvm/slang-llvm.cpp b/source/slang-llvm/slang-llvm.cpp index ef11fec5263..0cc19053ef9 100644 --- a/source/slang-llvm/slang-llvm.cpp +++ b/source/slang-llvm/slang-llvm.cpp @@ -230,7 +230,7 @@ void* LLVMJITSharedLibrary::findSymbolAddressByName(char const* name) if (fnExpected) { auto fn = std::move(*fnExpected); - return (void*)fn.getAddress(); + return (void*)fn.getValue(); } return nullptr; } @@ -493,7 +493,7 @@ static uint64_t __stdcall _aulldiv(uint64_t a, uint64_t b) x(memcpy, memcpy, void*, (void*, const void*, size_t)) \ x(memmove, memmove, void*, (void*, const void*, size_t)) \ x(memcmp, memcmp, int, (const void*, const void*, size_t)) \ - x(memset, memset, void*, (void*, int, size_t)) + x(memset, memset, void*, (void*, int, size_t)) #if SLANG_OSX # define SLANG_PLATFORM_FUNCS(x) \ From 7bb4e6fa23aa323385001cc1d4472b1aa9c6e9ae Mon Sep 17 00:00:00 2001 From: Sam Estep Date: Fri, 1 Aug 2025 15:58:21 -0400 Subject: [PATCH 4/5] Add missing `#include` --- source/slang-llvm/slang-llvm-filecheck.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/slang-llvm/slang-llvm-filecheck.cpp b/source/slang-llvm/slang-llvm-filecheck.cpp index 492b0e0d419..a7c8313d39a 100644 --- a/source/slang-llvm/slang-llvm-filecheck.cpp +++ b/source/slang-llvm/slang-llvm-filecheck.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include From fbfce23de66042a0851ec5731abf6a771eccdf04 Mon Sep 17 00:00:00 2001 From: Sam Estep Date: Fri, 1 Aug 2025 16:00:19 -0400 Subject: [PATCH 5/5] Undo irrelevant whitespace edit --- source/slang-llvm/slang-llvm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/slang-llvm/slang-llvm.cpp b/source/slang-llvm/slang-llvm.cpp index 0cc19053ef9..68512108187 100644 --- a/source/slang-llvm/slang-llvm.cpp +++ b/source/slang-llvm/slang-llvm.cpp @@ -493,7 +493,7 @@ static uint64_t __stdcall _aulldiv(uint64_t a, uint64_t b) x(memcpy, memcpy, void*, (void*, const void*, size_t)) \ x(memmove, memmove, void*, (void*, const void*, size_t)) \ x(memcmp, memcmp, int, (const void*, const void*, size_t)) \ - x(memset, memset, void*, (void*, int, size_t)) + x(memset, memset, void*, (void*, int, size_t)) #if SLANG_OSX # define SLANG_PLATFORM_FUNCS(x) \