[Mesa-dev] [PATCH] fix several maybe uninitialized variable errors

Eric Engestrom eric.engestrom at imgtec.com
Fri Mar 23 11:34:10 UTC 2018


On Friday, 2018-03-23 12:15:42 +0100, Marc Dietrich wrote:
> Mostly false warnings, however AVX detection could have been problematic.

Thanks, but could you split this into one patch per logical change?
(In this case, that's one patch per file you changed)

> 
> Signed-off-by: Marc Dietrich <marvin24 at gmx.de>
> ---
>  src/compiler/spirv/vtn_subgroup.c            |  2 ++
>  src/gallium/auxiliary/util/u_cpu_detect.c    | 35 ++++++++++++++--------------
>  src/gallium/auxiliary/vl/vl_vlc.h            |  3 +++
>  src/gallium/state_trackers/xvmc/subpicture.c |  2 +-
>  4 files changed, 24 insertions(+), 18 deletions(-)
> 
> diff --git a/src/compiler/spirv/vtn_subgroup.c b/src/compiler/spirv/vtn_subgroup.c
> index bd3143962b..107fe247b5 100644
> --- a/src/compiler/spirv/vtn_subgroup.c
> +++ b/src/compiler/spirv/vtn_subgroup.c
> @@ -277,6 +277,8 @@ vtn_handle_subgroup(struct vtn_builder *b, SpvOp opcode,
>        case 2:
>           op = nir_intrinsic_quad_swap_diagonal;
>           break;
> +      default:
> +         unreachable("Unhandled opcode");
>        }
>        vtn_build_subgroup_instr(b, op, val->ssa, vtn_ssa_value(b, w[4]),
>                                 NULL, 0, 0);
> diff --git a/src/gallium/auxiliary/util/u_cpu_detect.c b/src/gallium/auxiliary/util/u_cpu_detect.c
> index 6a59f271a8..adbc55ff8b 100644
> --- a/src/gallium/auxiliary/util/u_cpu_detect.c
> +++ b/src/gallium/auxiliary/util/u_cpu_detect.c
> @@ -442,6 +442,24 @@ util_cpu_detect(void)
>           cacheline = ((regs2[1] >> 8) & 0xFF) * 8;
>           if (cacheline > 0)
>              util_cpu_caps.cacheline = cacheline;
> +
> +         // check for avx512
> +         if (((regs2[2] >> 27) & 1) && // OSXSAVE
> +             (xgetbv() & (0x7 << 5)) && // OPMASK: upper-256 enabled by OS
> +             ((xgetbv() & 6) == 6)) { // XMM/YMM enabled by OS
> +            uint32_t regs3[4];
> +            cpuid_count(0x00000007, 0x00000000, regs3);
> +            util_cpu_caps.has_avx512f    = (regs3[1] >> 16) & 1;
> +            util_cpu_caps.has_avx512dq   = (regs3[1] >> 17) & 1;
> +            util_cpu_caps.has_avx512ifma = (regs3[1] >> 21) & 1;
> +            util_cpu_caps.has_avx512pf   = (regs3[1] >> 26) & 1;
> +            util_cpu_caps.has_avx512er   = (regs3[1] >> 27) & 1;
> +            util_cpu_caps.has_avx512cd   = (regs3[1] >> 28) & 1;
> +            util_cpu_caps.has_avx512bw   = (regs3[1] >> 30) & 1;
> +            util_cpu_caps.has_avx512vl   = (regs3[1] >> 31) & 1;
> +            util_cpu_caps.has_avx512vbmi = (regs3[2] >>  1) & 1;
> +         }
> +
>        }
>        if (util_cpu_caps.has_avx && regs[0] >= 0x00000007) {
>           uint32_t regs7[4];
> @@ -449,23 +467,6 @@ util_cpu_detect(void)
>           util_cpu_caps.has_avx2 = (regs7[1] >> 5) & 1;
>        }
>  
> -      // check for avx512
> -      if (((regs2[2] >> 27) & 1) && // OSXSAVE
> -          (xgetbv() & (0x7 << 5)) && // OPMASK: upper-256 enabled by OS
> -          ((xgetbv() & 6) == 6)) { // XMM/YMM enabled by OS
> -         uint32_t regs3[4];
> -         cpuid_count(0x00000007, 0x00000000, regs3);
> -         util_cpu_caps.has_avx512f    = (regs3[1] >> 16) & 1;
> -         util_cpu_caps.has_avx512dq   = (regs3[1] >> 17) & 1;
> -         util_cpu_caps.has_avx512ifma = (regs3[1] >> 21) & 1;
> -         util_cpu_caps.has_avx512pf   = (regs3[1] >> 26) & 1;
> -         util_cpu_caps.has_avx512er   = (regs3[1] >> 27) & 1;
> -         util_cpu_caps.has_avx512cd   = (regs3[1] >> 28) & 1;
> -         util_cpu_caps.has_avx512bw   = (regs3[1] >> 30) & 1;
> -         util_cpu_caps.has_avx512vl   = (regs3[1] >> 31) & 1;
> -         util_cpu_caps.has_avx512vbmi = (regs3[2] >>  1) & 1;
> -      }
> -
>        if (regs[1] == 0x756e6547 && regs[2] == 0x6c65746e && regs[3] == 0x49656e69) {
>           /* GenuineIntel */
>           util_cpu_caps.has_intel = 1;
> diff --git a/src/gallium/auxiliary/vl/vl_vlc.h b/src/gallium/auxiliary/vl/vl_vlc.h
> index dd7b0918ae..e1e9c486ee 100644
> --- a/src/gallium/auxiliary/vl/vl_vlc.h
> +++ b/src/gallium/auxiliary/vl/vl_vlc.h
> @@ -197,6 +197,9 @@ vl_vlc_init(struct vl_vlc *vlc, unsigned num_inputs,
>        vl_vlc_next_input(vlc);
>        vl_vlc_align_data_ptr(vlc);
>        vl_vlc_fillbits(vlc);
> +   } else {
> +      vlc->data = NULL;
> +      vlc->end = NULL;
>     }
>  }
>  
> diff --git a/src/gallium/state_trackers/xvmc/subpicture.c b/src/gallium/state_trackers/xvmc/subpicture.c
> index bc26976e28..e28fd43f7a 100644
> --- a/src/gallium/state_trackers/xvmc/subpicture.c
> +++ b/src/gallium/state_trackers/xvmc/subpicture.c
> @@ -266,7 +266,7 @@ Status XvMCCreateSubpicture(Display *dpy, XvMCContext *context, XvMCSubpicture *
>     struct pipe_context *pipe;
>     struct pipe_resource tex_templ, *tex;
>     struct pipe_sampler_view sampler_templ;
> -   enum pipe_format palette_format;
> +   enum pipe_format palette_format = PIPE_FORMAT_NONE;
>     Status ret;
>  
>     XVMC_MSG(XVMC_TRACE, "[XvMC] Creating subpicture %p.\n", subpicture);
> -- 
> 2.16.2
> 
> _______________________________________________
> 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