From 2fc9a6d8342dc7df6fdce862e6fe61f87233c31b Mon Sep 17 00:00:00 2001 From: Stenzek Date: Fri, 26 Apr 2024 19:23:46 +1000 Subject: [PATCH] CPU/NewRec: Work around clang <16 structured binding capture bug --- src/core/cpu_newrec_compiler_aarch32.cpp | 2 +- src/core/cpu_newrec_compiler_aarch64.cpp | 2 +- src/core/cpu_newrec_compiler_riscv64.cpp | 2 +- src/core/cpu_newrec_compiler_x64.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/cpu_newrec_compiler_aarch32.cpp b/src/core/cpu_newrec_compiler_aarch32.cpp index 3d4d8a86d..88df0bede 100644 --- a/src/core/cpu_newrec_compiler_aarch32.cpp +++ b/src/core/cpu_newrec_compiler_aarch32.cpp @@ -1676,7 +1676,7 @@ void CPU::NewRec::AArch32Compiler::Compile_lwc2(CompileFlags cf, MemoryAccessSiz std::optional(); FlushForLoadStore(address, false, use_fastmem); const Register addr = ComputeLoadStoreAddressArg(cf, address, addr_reg); - const Register value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action]() { + const Register value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action = action]() { return (action == GTERegisterAccessAction::CallHandler && g_settings.gpu_pgxp_enable) ? Register(AllocateTempHostReg(HR_CALLEE_SAVED)) : RRET; diff --git a/src/core/cpu_newrec_compiler_aarch64.cpp b/src/core/cpu_newrec_compiler_aarch64.cpp index 34a1ce5a8..4a30afac2 100644 --- a/src/core/cpu_newrec_compiler_aarch64.cpp +++ b/src/core/cpu_newrec_compiler_aarch64.cpp @@ -1655,7 +1655,7 @@ void CPU::NewRec::AArch64Compiler::Compile_lwc2(CompileFlags cf, MemoryAccessSiz std::optional(); FlushForLoadStore(address, false, use_fastmem); const WRegister addr = ComputeLoadStoreAddressArg(cf, address, addr_reg); - const WRegister value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action]() { + const WRegister value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action = action]() { return (action == GTERegisterAccessAction::CallHandler && g_settings.gpu_pgxp_enable) ? WRegister(AllocateTempHostReg(HR_CALLEE_SAVED)) : RWRET; diff --git a/src/core/cpu_newrec_compiler_riscv64.cpp b/src/core/cpu_newrec_compiler_riscv64.cpp index cffc58cb8..7cb29d5ee 100644 --- a/src/core/cpu_newrec_compiler_riscv64.cpp +++ b/src/core/cpu_newrec_compiler_riscv64.cpp @@ -1963,7 +1963,7 @@ void CPU::NewRec::RISCV64Compiler::Compile_lwc2(CompileFlags cf, MemoryAccessSiz g_settings.gpu_pgxp_enable ? std::optional(GPR(AllocateTempHostReg(HR_CALLEE_SAVED))) : std::optional(); FlushForLoadStore(address, false, use_fastmem); const GPR addr = ComputeLoadStoreAddressArg(cf, address, addr_reg); - const GPR value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action]() { + const GPR value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action = action]() { return (action == GTERegisterAccessAction::CallHandler && g_settings.gpu_pgxp_enable) ? GPR(AllocateTempHostReg(HR_CALLEE_SAVED)) : RRET; diff --git a/src/core/cpu_newrec_compiler_x64.cpp b/src/core/cpu_newrec_compiler_x64.cpp index 0b59bac47..fbe4ce683 100644 --- a/src/core/cpu_newrec_compiler_x64.cpp +++ b/src/core/cpu_newrec_compiler_x64.cpp @@ -1623,7 +1623,7 @@ void CPU::NewRec::X64Compiler::Compile_lwc2(CompileFlags cf, MemoryAccessSize si std::optional(); FlushForLoadStore(address, false, use_fastmem); const Reg32 addr = ComputeLoadStoreAddressArg(cf, address, addr_reg); - const Reg32 value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action]() { + const Reg32 value = GenerateLoad(addr, MemoryAccessSize::Word, false, use_fastmem, [this, action = action]() { return (action == GTERegisterAccessAction::CallHandler && g_settings.gpu_pgxp_enable) ? Reg32(AllocateTempHostReg(HR_CALLEE_SAVED)) : RWRET;