From 24fbafdb1dab445926e15db4667f33c04ea9bc45 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Tue, 4 Mar 2025 22:05:35 +0100 Subject: [PATCH] Update llvm to 22.1.8 --- .github/workflows/rpcs3.yml | 12 ++++++------ 3rdparty/llvm/CMakeLists.txt | 2 +- 3rdparty/llvm/llvm | 2 +- BUILDING.md | 2 +- buildfiles/msvc/rpcs3_default.props | 12 +++++++++++- rpcs3/Emu/CMakeLists.txt | 11 +++++++++++ rpcs3/Emu/Cell/PPUThread.cpp | 2 +- rpcs3/Emu/Cell/SPULLVMRecompiler.cpp | 7 +++++++ 8 files changed, 39 insertions(+), 11 deletions(-) diff --git a/.github/workflows/rpcs3.yml b/.github/workflows/rpcs3.yml index 515555a224..778e5f3042 100644 --- a/.github/workflows/rpcs3.yml +++ b/.github/workflows/rpcs3.yml @@ -30,23 +30,23 @@ jobs: matrix: include: - os: ubuntu-24.04 - docker_img: "rpcs3/rpcs3-ci-jammy:1.14" + docker_img: "rpcs3/rpcs3-ci-jammy:2.0" build_sh: "/rpcs3/.ci/build-linux.sh" compiler: clang UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux" - os: ubuntu-24.04 - docker_img: "rpcs3/rpcs3-ci-jammy:1.14" + docker_img: "rpcs3/rpcs3-ci-jammy:2.0" build_sh: "/rpcs3/.ci/build-linux.sh" compiler: gcc - os: ubuntu-24.04-arm - docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.14" + docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:2.0" build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" compiler: clang UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1 UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64" - os: ubuntu-24.04-arm - docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.14" + docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:2.0" build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" compiler: gcc name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} @@ -136,7 +136,7 @@ jobs: CCACHE_DIR: /tmp/ccache_dir QT_VER: '6.11.1' QT_VER_MAIN: '6' - LLVM_COMPILER_VER: '21' + LLVM_COMPILER_VER: '22' RELEASE_MESSAGE: ../GitHubReleaseMessage.txt UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }} UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }} @@ -215,7 +215,7 @@ jobs: QT_VER: '6.11.1' QT_VER_MSVC: 'msvc2022' QT_DATE: '202605090529' - LLVM_VER: '19.1.7' + LLVM_VER: '22.1.8' VULKAN_VER: '1.4.341.1' VULKAN_SDK_SHA: 'bcf2d75aa9556889ab974858666e20b3655b6055a0db704ccb47279ff33b5bfe' CCACHE_SHA: '859141059ac950e1e8cd042c66f842f26b9e3a62a1669a69fe6ba180cb58bbdf' diff --git a/3rdparty/llvm/CMakeLists.txt b/3rdparty/llvm/CMakeLists.txt index a4af3b3ef5..a733c79fe2 100644 --- a/3rdparty/llvm/CMakeLists.txt +++ b/3rdparty/llvm/CMakeLists.txt @@ -51,7 +51,7 @@ if(WITH_LLVM) set(STATIC_LINK_LLVM ON CACHE BOOL "Link against LLVM statically. This will get set to ON if you build LLVM from the submodule." FORCE) - find_package(LLVM 19.1 CONFIG) + find_package(LLVM 22.1 CONFIG) if(NOT LLVM_FOUND) message(FATAL_ERROR "Couldn't build LLVM from the submodule. You might need to run `git submodule update --init`") endif() diff --git a/3rdparty/llvm/llvm b/3rdparty/llvm/llvm index cd708029e0..ca7933e47d 160000 --- a/3rdparty/llvm/llvm +++ b/3rdparty/llvm/llvm @@ -1 +1 @@ -Subproject commit cd708029e0b2869e80abe31ddb175f7c35361f90 +Subproject commit ca7933e47d3a3451d81e72ac174dcb5aa28b59d1 diff --git a/BUILDING.md b/BUILDING.md index fb8a8144cf..2836e09ce9 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -132,7 +132,7 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r **NOTE:** The recommended build configuration is `Release`. (On older revisions: `Release - LLVM`) To speed up the compilation time, you may want to download and extract to `\build\lib_ext\<$(Configuration)>-x64` (e.g. `c:\rpcs3\build\lib_ext\Release-x64`; the path needs to be created) the following precompiled lib: -- [LLVM libs](https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-19.1.7/llvmlibs_mt.7z) +- [LLVM libs](https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-22.1.8/llvmlibs_mt.7z) **NOTES:** - `<$(Configuration)>` can assume values `Release` or `Debug`. diff --git a/buildfiles/msvc/rpcs3_default.props b/buildfiles/msvc/rpcs3_default.props index 31c4c243d2..2086c856d4 100644 --- a/buildfiles/msvc/rpcs3_default.props +++ b/buildfiles/msvc/rpcs3_default.props @@ -36,6 +36,7 @@ avutil.lib; swresample.lib; swscale.lib; + LLVMABI.lib; LLVMAggressiveInstCombine.lib; LLVMAnalysis.lib; LLVMAsmParser.lib; @@ -44,9 +45,10 @@ LLVMBitReader.lib; LLVMBitstreamReader.lib; LLVMBitWriter.lib; + LLVMCAS.lib; LLVMCFGuard.lib; + LLVMCGData.lib; LLVMCodeGen.lib; - LLVMCodeGenData.lib; LLVMCodeGenTypes.lib; LLVMCore.lib; LLVMCoroutines.lib; @@ -55,12 +57,15 @@ LLVMDebugInfoCodeView.lib; LLVMDebuginfod.lib; LLVMDebugInfoDWARF.lib; + LLVMDebugInfoDWARFLowLevel.lib; LLVMDebugInfoGSYM.lib; LLVMDebugInfoLogicalView.lib; LLVMDebugInfoMSF.lib; LLVMDebugInfoPDB.lib; LLVMDemangle.lib; LLVMDlltoolDriver.lib; + LLVMDTLTO.lib; + LLVMDWARFCFIChecker.lib; LLVMDWARFLinker.lib; LLVMDWARFLinkerClassic.lib; LLVMDWARFLinkerParallel.lib; @@ -68,6 +73,8 @@ LLVMExecutionEngine.lib; LLVMExtensions.lib; LLVMFileCheck.lib; + LLVMFrontendAtomic.lib; + LLVMFrontendDirective.lib; LLVMFrontendDriver.lib; LLVMFrontendHLSL.lib; LLVMFrontendOffloading.lib; @@ -107,6 +114,7 @@ LLVMOrcShared.lib; LLVMOrcTargetProcess.lib; LLVMPasses.lib; + LLVMPlugins.lib; LLVMProfileData.lib; LLVMRemarks.lib; LLVMRuntimeDyld.lib; @@ -114,12 +122,14 @@ LLVMScalarOpts.lib; LLVMSelectionDAG.lib; LLVMSupport.lib; + LLVMSupportLSP.lib; LLVMSymbolize.lib; LLVMTableGen.lib; LLVMTableGenBasic.lib; LLVMTableGenCommon.lib; LLVMTarget.lib; LLVMTargetParser.lib; + LLVMTelemetry.lib; LLVMTextAPI.lib; LLVMTextAPIBinaryReader.lib; LLVMTransformUtils.lib; diff --git a/rpcs3/Emu/CMakeLists.txt b/rpcs3/Emu/CMakeLists.txt index 045fa30769..8293047ccc 100644 --- a/rpcs3/Emu/CMakeLists.txt +++ b/rpcs3/Emu/CMakeLists.txt @@ -29,6 +29,17 @@ if(USE_ASAN) set_source_files_properties(../../Utilities/Thread.cpp PROPERTIES COMPILE_DEFINITIONS USE_ASAN) endif() +# GCC overemits weak type information when using LTO +# This causes an issue with LLVM 22 which is build without RTTI +# Issue is specifically related to vfs::ProxyFileSystem +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set_source_files_properties( + Cell/PPUThread.cpp + Cell/SPULLVMRecompiler.cpp + PROPERTIES COMPILE_OPTIONS -fno-lto + ) +endif() + if(NOT USE_SYSTEM_OPENAL) target_compile_definitions(rpcs3_emu PUBLIC AL_LIBTYPE_STATIC) endif() diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index a6703ae345..96acc113e2 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -5188,7 +5188,7 @@ bool ppu_initialize(const ppu_module& info, bool check_only, u64 file_s settings += ppu_settings::daz_and_ftz; // Write version, hash, CPU, settings - fmt::append(obj_name, "v7-kusa-%s-%s-%s.obj", fmt::base57(output, 16), fmt::base57(settings), jit_compiler::cpu(g_cfg.core.llvm_cpu.to_string())); + fmt::append(obj_name, "v8-kusa-%s-%s-%s.obj", fmt::base57(output, 16), fmt::base57(settings), jit_compiler::cpu(g_cfg.core.llvm_cpu.to_string())); } if (cpu ? cpu->state.all_of(cpu_flag::exit) : Emu.IsStopped()) diff --git a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp index b5f784793d..ac22783acc 100644 --- a/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPULLVMRecompiler.cpp @@ -567,6 +567,10 @@ class spu_llvm_recompiler : public spu_recompiler_base, public cpu_translator return _ptr(m_thread, ::offset32(offset_args...)); } +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnonnull" +#endif template T* spu_mem_attr(T* inst) { @@ -600,6 +604,9 @@ class spu_llvm_recompiler : public spu_recompiler_base, public cpu_translator return inst; } +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif // Return default register type llvm::Type* get_reg_type(u32 index)