summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2016-03-17 19:51:43 -0400
committerbunnei <bunneidev@gmail.com>2016-04-13 23:04:43 -0400
commit135aec7beab9e484183565eea9d3cab03fe0b879 (patch)
tree5f5a753d2a48bff8eade3517476451446e40c206
parente5d417213ce67bc23ac644132828d125a59c2455 (diff)
shader_jit_x64: Fix strict memory aliasing issues.
-rw-r--r--src/video_core/shader/shader_jit_x64.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/video_core/shader/shader_jit_x64.cpp b/src/video_core/shader/shader_jit_x64.cpp
index dffe051ef..d74b58d84 100644
--- a/src/video_core/shader/shader_jit_x64.cpp
+++ b/src/video_core/shader/shader_jit_x64.cpp
@@ -741,7 +741,9 @@ void JitCompiler::Compile_Block(unsigned end) {
void JitCompiler::Compile_NextInstr(unsigned* offset) {
offset_ptr = offset;
- Instruction instr = *(Instruction*)&g_state.vs.program_code[(*offset_ptr)++];
+ Instruction instr;
+ std::memcpy(&instr, &g_state.vs.program_code[(*offset_ptr)++], sizeof(Instruction));
+
OpCode::Id opcode = instr.opcode.Value();
auto instr_func = instr_table[static_cast<unsigned>(opcode)];