From: Matt Turner Date: Thu, 28 Jul 2016 19:43:19 +0000 (-0700) Subject: glsl_to_tgsi: Avoid aliasing violations. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bbe012f02ae8963668e12a571b13e8c95044d2ba;p=mesa.git glsl_to_tgsi: Avoid aliasing violations. Reviewed-by: Dave Airlie --- diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 38e2c4a5d60..362559fbe0d 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -1131,8 +1131,7 @@ glsl_to_tgsi_visitor::st_src_reg_for_double(double val) st_src_reg src(PROGRAM_IMMEDIATE, -1, GLSL_TYPE_DOUBLE); union gl_constant_value uval[2]; - uval[0].u = *(uint32_t *)&val; - uval[1].u = *(((uint32_t *)&val) + 1); + memcpy(uval, &val, sizeof(uval)); src.index = add_constant(src.file, uval, 1, GL_DOUBLE, &src.swizzle); return src; @@ -3066,8 +3065,7 @@ glsl_to_tgsi_visitor::visit(ir_constant *ir) case GLSL_TYPE_DOUBLE: gl_type = GL_DOUBLE; 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(double)); } break; case GLSL_TYPE_UINT: