Procházet zdrojové kódy

shader_jit_x64: Fix strict memory aliasing issues.

bunnei před 10 roky
rodič
revize
135aec7bea
1 změnil soubory, kde provedl 3 přidání a 1 odebrání
  1. 3 1
      src/video_core/shader/shader_jit_x64.cpp

+ 3 - 1
src/video_core/shader/shader_jit_x64.cpp

@@ -741,7 +741,9 @@ void JitCompiler::Compile_Block(unsigned end) {
 void JitCompiler::Compile_NextInstr(unsigned* offset) {
 void JitCompiler::Compile_NextInstr(unsigned* offset) {
     offset_ptr = 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();
     OpCode::Id opcode = instr.opcode.Value();
     auto instr_func = instr_table[static_cast<unsigned>(opcode)];
     auto instr_func = instr_table[static_cast<unsigned>(opcode)];