diff options
| author | 2016-03-17 19:51:43 -0400 | |
|---|---|---|
| committer | 2016-04-13 23:04:43 -0400 | |
| commit | 135aec7beab9e484183565eea9d3cab03fe0b879 (patch) | |
| tree | 5f5a753d2a48bff8eade3517476451446e40c206 | |
| parent | emitter: Support arbitrary FixupBranch targets. (diff) | |
| download | yuzu-135aec7beab9e484183565eea9d3cab03fe0b879.tar.gz yuzu-135aec7beab9e484183565eea9d3cab03fe0b879.tar.xz yuzu-135aec7beab9e484183565eea9d3cab03fe0b879.zip | |
shader_jit_x64: Fix strict memory aliasing issues.
| -rw-r--r-- | src/video_core/shader/shader_jit_x64.cpp | 4 |
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) { | |||
| 741 | void JitCompiler::Compile_NextInstr(unsigned* offset) { | 741 | void JitCompiler::Compile_NextInstr(unsigned* offset) { |
| 742 | offset_ptr = offset; | 742 | offset_ptr = offset; |
| 743 | 743 | ||
| 744 | Instruction instr = *(Instruction*)&g_state.vs.program_code[(*offset_ptr)++]; | 744 | Instruction instr; |
| 745 | std::memcpy(&instr, &g_state.vs.program_code[(*offset_ptr)++], sizeof(Instruction)); | ||
| 746 | |||
| 745 | OpCode::Id opcode = instr.opcode.Value(); | 747 | OpCode::Id opcode = instr.opcode.Value(); |
| 746 | auto instr_func = instr_table[static_cast<unsigned>(opcode)]; | 748 | auto instr_func = instr_table[static_cast<unsigned>(opcode)]; |
| 747 | 749 | ||