Fix some GCC ODR warnings

struct GekkoOPTemplate was implemented differently in different
compilation units, which breaks the ODR and could end up causing issues
as symbols exported from one compilation unit could end up being used by
another even if they have different implementations.

This puts them in an anonymous namespace, restricting any generated
symbols to the single compilation unit.
This commit is contained in:
Jonathan Hamilton 2017-06-29 12:21:32 -07:00
parent c29c1f92af
commit e66e034419
3 changed files with 9 additions and 0 deletions

View File

@ -8,12 +8,15 @@
#include "Core/PowerPC/Interpreter/Interpreter.h" #include "Core/PowerPC/Interpreter/Interpreter.h"
#include "Core/PowerPC/PPCTables.h" #include "Core/PowerPC/PPCTables.h"
namespace
{
struct GekkoOPTemplate struct GekkoOPTemplate
{ {
int opcode; int opcode;
Interpreter::Instruction Inst; Interpreter::Instruction Inst;
GekkoOPInfo opinfo; GekkoOPInfo opinfo;
}; };
}
// clang-format off // clang-format off
static GekkoOPInfo unknownopinfo = { "unknown_instruction", OPTYPE_UNKNOWN, FL_ENDBLOCK, 0, 0, 0, 0 }; static GekkoOPInfo unknownopinfo = { "unknown_instruction", OPTYPE_UNKNOWN, FL_ENDBLOCK, 0, 0, 0, 0 };

View File

@ -32,11 +32,14 @@ void Jit64::DynaRunTable63(UGeckoInstruction _inst)
(this->*dynaOpTable63[_inst.SUBOP10])(_inst); (this->*dynaOpTable63[_inst.SUBOP10])(_inst);
} }
namespace
{
struct GekkoOPTemplate struct GekkoOPTemplate
{ {
int opcode; int opcode;
Jit64::Instruction Inst; Jit64::Instruction Inst;
}; };
}
const GekkoOPTemplate primarytable[] = { const GekkoOPTemplate primarytable[] = {
{4, &Jit64::DynaRunTable4}, // RunTable4 {4, &Jit64::DynaRunTable4}, // RunTable4

View File

@ -39,12 +39,15 @@ void JitArm64::DynaRunTable63(UGeckoInstruction inst)
(this->*dynaOpTable63[inst.SUBOP10])(inst); (this->*dynaOpTable63[inst.SUBOP10])(inst);
} }
namespace
{
struct GekkoOPTemplate struct GekkoOPTemplate
{ {
int opcode; int opcode;
_Instruction Inst; _Instruction Inst;
// GekkoOPInfo opinfo; // Doesn't need opinfo, Interpreter fills it out // GekkoOPInfo opinfo; // Doesn't need opinfo, Interpreter fills it out
}; };
}
constexpr GekkoOPTemplate primarytable[] = { constexpr GekkoOPTemplate primarytable[] = {
{4, &JitArm64::DynaRunTable4}, // RunTable4 {4, &JitArm64::DynaRunTable4}, // RunTable4