Fix compilation with GCC 11: Implement https://github.com/dolphin-emu/dolphin/pull/9498 by leoetlino and include <limits> in necessary header files

This commit is contained in:
HTCPCPS 2021-10-20 21:19:12 -07:00
parent 166abd51d9
commit d821405e69
4 changed files with 26 additions and 13 deletions

View file

@ -8,6 +8,7 @@
#include <array>
#include <cstdlib>
#include <vector>
#include <limits>
#include "Common/CommonTypes.h"

View file

@ -8,6 +8,7 @@
#include <map>
#include <string>
#include <vector>
#include <limits>
#include "Common/CommonTypes.h"

View file

@ -478,12 +478,12 @@ Gen::OpArg DSPEmitter::M_SDSP_external_interrupt_waiting()
Gen::OpArg DSPEmitter::M_SDSP_r_st(size_t index)
{
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.st[index])));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.st) + sizeof(SDSP::r.st[0]) * index));
}
Gen::OpArg DSPEmitter::M_SDSP_reg_stack_ptr(size_t index)
{
return MDisp(R15, static_cast<int>(offsetof(SDSP, reg_stack_ptr[index])));
return MDisp(R15, static_cast<int>(offsetof(SDSP, reg_stack_ptr) + sizeof(SDSP::reg_stack_ptr[0]) * index));
}
}
}

View file

@ -35,25 +35,30 @@ static Gen::OpArg GetRegisterPointer(size_t reg)
case DSP_REG_AR1:
case DSP_REG_AR2:
case DSP_REG_AR3:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ar[reg - DSP_REG_AR0])));
return MDisp(
R15, static_cast<int>(offsetof(SDSP, r.ar) + sizeof(SDSP::r.ar[0]) * (reg - DSP_REG_AR0)));
case DSP_REG_IX0:
case DSP_REG_IX1:
case DSP_REG_IX2:
case DSP_REG_IX3:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ix[reg - DSP_REG_IX0])));
return MDisp(
R15, static_cast<int>(offsetof(SDSP, r.ix) + sizeof(SDSP::r.ix[0]) * (reg - DSP_REG_IX0)));
case DSP_REG_WR0:
case DSP_REG_WR1:
case DSP_REG_WR2:
case DSP_REG_WR3:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.wr[reg - DSP_REG_WR0])));
return MDisp(
R15, static_cast<int>(offsetof(SDSP, r.wr) + sizeof(SDSP::r.wr[0]) * (reg - DSP_REG_WR0)));
case DSP_REG_ST0:
case DSP_REG_ST1:
case DSP_REG_ST2:
case DSP_REG_ST3:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.st[reg - DSP_REG_ST0])));
return MDisp(
R15, static_cast<int>(offsetof(SDSP, r.st) + sizeof(SDSP::r.st[0]) * (reg - DSP_REG_ST0)));
case DSP_REG_ACH0:
case DSP_REG_ACH1:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[reg - DSP_REG_ACH0].h)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[0].h) +
sizeof(SDSP::r.ac[0]) * (reg - DSP_REG_ACH0)));
case DSP_REG_CR:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.cr)));
case DSP_REG_SR:
@ -68,22 +73,28 @@ static Gen::OpArg GetRegisterPointer(size_t reg)
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.prod.m2)));
case DSP_REG_AXL0:
case DSP_REG_AXL1:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ax[reg - DSP_REG_AXL0].l)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ax[0].l) +
sizeof(SDSP::r.ax[0]) * (reg - DSP_REG_AXL0)));
case DSP_REG_AXH0:
case DSP_REG_AXH1:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ax[reg - DSP_REG_AXH0].h)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ax[0].h) +
sizeof(SDSP::r.ax[0]) * (reg - DSP_REG_AXH0)));
case DSP_REG_ACL0:
case DSP_REG_ACL1:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[reg - DSP_REG_ACL0].l)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[0].l) +
sizeof(SDSP::r.ac[0]) * (reg - DSP_REG_ACL0)));
case DSP_REG_ACM0:
case DSP_REG_ACM1:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[reg - DSP_REG_ACM0].m)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[0].m) +
sizeof(SDSP::r.ac[0]) * (reg - DSP_REG_ACM0)));
case DSP_REG_AX0_32:
case DSP_REG_AX1_32:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ax[reg - DSP_REG_AX0_32].val)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ax[0].val) +
sizeof(SDSP::r.ax[0]) * (reg - DSP_REG_AX0_32)));
case DSP_REG_ACC0_64:
case DSP_REG_ACC1_64:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[reg - DSP_REG_ACC0_64].val)));
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.ac[0].val) +
sizeof(SDSP::r.ac[0]) * (reg - DSP_REG_ACC0_64)));
case DSP_REG_PROD_64:
return MDisp(R15, static_cast<int>(offsetof(SDSP, r.prod.val)));
default: