diff --git a/.ci/build-mac.sh b/.ci/build-mac.sh index 3bf4fbe1c2ac..c833252e123f 100755 --- a/.ci/build-mac.sh +++ b/.ci/build-mac.sh @@ -17,7 +17,6 @@ if [ "$INSTALL_DEPS" = "true" ] ; then brew install -f --overwrite nasm ninja git p7zip create-dmg ccache pipenv arch -x86_64 /usr/local/bin/brew -v || arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - arch -x86_64 /usr/local/bin/brew update arch -x86_64 /usr/local/bin/brew install -f --overwrite llvm@16 glew cmake sdl2 vulkan-headers ffmpeg arch -x86_64 /usr/local/bin/brew link -f llvm@16 diff --git a/rpcs3/Emu/Cell/PPUAnalyser.cpp b/rpcs3/Emu/Cell/PPUAnalyser.cpp index f680b6907eb9..2a774d0fd35d 100644 --- a/rpcs3/Emu/Cell/PPUAnalyser.cpp +++ b/rpcs3/Emu/Cell/PPUAnalyser.cpp @@ -1463,7 +1463,7 @@ bool ppu_module::analyse(u32 lib_toc, u32 entry, const u32 sec_end, const std::b { const u32 target = (op.aa ? 0 : iaddr) + (type == ppu_itype::B ? +op.bt24 : +op.bt14); - if (target >= start && target < end && (op.aa && verify_func(iaddr))) + if (target >= start && target < end && (!op.aa || verify_func(iaddr))) { if (target < func.addr || target >= func.addr + func.size) { diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 9936fc40763a..eb9f967fcee3 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -1206,9 +1206,7 @@ std::array op_branch_targets(u32 pc, ppu_opcode_t op) { std::array res{pc + 4, umax}; - g_fxo->need(); - - if (u32 target = g_fxo->get().get_target(pc)) + if (u32 target = g_fxo->is_init() ? g_fxo->get().get_target(pc) : 0) { res[0] = target; return res; @@ -3769,9 +3767,7 @@ bool ppu_initialize(const ppu_module& info, bool check_only) { for (auto& block : func.blocks) { - const auto targets = g_fxo->get().get_targets(block.first, block.second); - - if (!targets.empty()) + if (g_fxo->is_init() && !g_fxo->get().get_targets(block.first, block.second).empty()) { // Replace the block with ppu_far_jump continue; diff --git a/rpcs3/Loader/ELF.h b/rpcs3/Loader/ELF.h index 831e58dea1f4..abb9979c1973 100644 --- a/rpcs3/Loader/ELF.h +++ b/rpcs3/Loader/ELF.h @@ -456,7 +456,6 @@ class elf_object // Rely on previous sh_offset value! if (hdr.p_offset <= shdr.sh_offset && shdr.sh_offset + shdr.sh_size - 1 <= hdr.p_offset + hdr.p_filesz - 1) { - const auto& prog = ::at32(progs, p_index); out.sh_offset = data_base + shdr.sh_offset - hdr.p_offset; result = true; break; diff --git a/rpcs3/util/fixed_typemap.hpp b/rpcs3/util/fixed_typemap.hpp index 896d8ae779c3..3c2ee8e7f268 100644 --- a/rpcs3/util/fixed_typemap.hpp +++ b/rpcs3/util/fixed_typemap.hpp @@ -347,7 +347,7 @@ namespace stx } // Check if object is not initialized but shall be initialized first (to use in initializing other objects) - template + template requires (std::is_constructible_v || std::is_default_constructible_v) void need() noexcept { if (!m_init[stx::typeindex>()])