mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 15:19:42 -06:00
DSPJit: Suppress offsetof conditionally-supported warnings
The DSP JIT only applies on x64, so if it doesn't work on esoteric compilers then that's not a problem. (And if it fails to compile, then it'll still produce an error on that platform, just no warnings on other platforms)
This commit is contained in:
@ -470,6 +470,10 @@ void DSPEmitter::CompileDispatcher()
|
|||||||
RET();
|
RET();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Winvalid-offsetof"
|
||||||
|
#endif
|
||||||
Gen::OpArg DSPEmitter::M_SDSP_pc()
|
Gen::OpArg DSPEmitter::M_SDSP_pc()
|
||||||
{
|
{
|
||||||
return MDisp(R15, static_cast<int>(offsetof(SDSP, pc)));
|
return MDisp(R15, static_cast<int>(offsetof(SDSP, pc)));
|
||||||
@ -503,5 +507,8 @@ Gen::OpArg DSPEmitter::M_SDSP_reg_stack_ptrs(size_t index)
|
|||||||
return MDisp(R15, static_cast<int>(offsetof(SDSP, reg_stack_ptrs) +
|
return MDisp(R15, static_cast<int>(offsetof(SDSP, reg_stack_ptrs) +
|
||||||
sizeof(SDSP::reg_stack_ptrs[0]) * index));
|
sizeof(SDSP::reg_stack_ptrs[0]) * index));
|
||||||
}
|
}
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace DSP::JIT::x64
|
} // namespace DSP::JIT::x64
|
||||||
|
@ -149,7 +149,14 @@ void DSPEmitter::multiply_mulx(u8 axh0, u8 axh1)
|
|||||||
// direct use of prod regs by AX/AXWII (look @that part of ucode).
|
// direct use of prod regs by AX/AXWII (look @that part of ucode).
|
||||||
void DSPEmitter::clrp(const UDSPInstruction opc)
|
void DSPEmitter::clrp(const UDSPInstruction opc)
|
||||||
{
|
{
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Winvalid-offsetof"
|
||||||
|
#endif
|
||||||
int offset = static_cast<int>(offsetof(SDSP, r.prod.val));
|
int offset = static_cast<int>(offsetof(SDSP, r.prod.val));
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
// 64bit move to memory does not work. use 2 32bits
|
// 64bit move to memory does not work. use 2 32bits
|
||||||
MOV(32, MDisp(R15, offset + 0 * sizeof(u32)), Imm32(0xfff00000U));
|
MOV(32, MDisp(R15, offset + 0 * sizeof(u32)), Imm32(0xfff00000U));
|
||||||
MOV(32, MDisp(R15, offset + 1 * sizeof(u32)), Imm32(0x001000ffU));
|
MOV(32, MDisp(R15, offset + 1 * sizeof(u32)), Imm32(0x001000ffU));
|
||||||
|
@ -20,6 +20,10 @@ namespace DSP::JIT::x64
|
|||||||
constexpr std::array<X64Reg, 15> s_allocation_order = {
|
constexpr std::array<X64Reg, 15> s_allocation_order = {
|
||||||
{R8, R9, R10, R11, R12, R13, R14, R15, RSI, RDI, RBX, RCX, RDX, RAX, RBP}};
|
{R8, R9, R10, R11, R12, R13, R14, R15, RSI, RDI, RBX, RCX, RDX, RAX, RBP}};
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Winvalid-offsetof"
|
||||||
|
#endif
|
||||||
static Gen::OpArg GetRegisterPointer(size_t reg)
|
static Gen::OpArg GetRegisterPointer(size_t reg)
|
||||||
{
|
{
|
||||||
switch (reg)
|
switch (reg)
|
||||||
@ -95,6 +99,9 @@ static Gen::OpArg GetRegisterPointer(size_t reg)
|
|||||||
return M(static_cast<void*>(nullptr));
|
return M(static_cast<void*>(nullptr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
#define STATIC_REG_ACCS
|
#define STATIC_REG_ACCS
|
||||||
//#undef STATIC_REG_ACCS
|
//#undef STATIC_REG_ACCS
|
||||||
|
Reference in New Issue
Block a user