[Mesa-dev] [PATCH 1/7] glsl_to_tgsi: Avoid aliasing violations.

Dave Airlie airlied at gmail.com
Fri Jul 29 01:56:54 UTC 2016


Reviewed-by: Dave Airlie <airlied at redhat.com>

On 29 July 2016 at 08:35, Matt Turner <mattst88 at gmail.com> wrote:
> ---
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 38e2c4a..362559f 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:
> --
> 2.7.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list