From c674f11e42e25924084aaf825c7dba95748c66fe Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 8 Feb 2017 01:23:00 +0000 Subject: mesa/st: fix strict aliasing issue in int64 code. This fixes the int64 code same as the double code. Reviewed-by: Timothy Arceri Signed-off-by: Dave Airlie --- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/mesa') diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 77a51d57a39..116f30c9446 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -3363,15 +3363,13 @@ glsl_to_tgsi_visitor::visit(ir_constant *ir) case GLSL_TYPE_INT64: gl_type = GL_INT64_ARB; for (i = 0; i < ir->type->vector_elements; i++) { - values[i * 2].i = *(uint32_t *)&ir->value.d[i]; - values[i * 2 + 1].i = *(((uint32_t *)&ir->value.d[i]) + 1); + memcpy(&values[i * 2], &ir->value.d[i], sizeof(int64_t)); } break; case GLSL_TYPE_UINT64: gl_type = GL_UNSIGNED_INT64_ARB; for (i = 0; i < ir->type->vector_elements; i++) { - values[i * 2].i = *(uint32_t *)&ir->value.d[i]; - values[i * 2 + 1].i = *(((uint32_t *)&ir->value.d[i]) + 1); + memcpy(&values[i * 2], &ir->value.d[i], sizeof(uint64_t)); } break; case GLSL_TYPE_UINT: -- cgit v1.2.3