[Mesa-dev] [PATCH 1/5] glsl: prevent spurious Valgrind errors when serializing NIR
Timothy Arceri
tarceri at itsqueeze.com
Thu Apr 12 00:10:39 UTC 2018
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
On 11/04/18 20:56, Nicolai Hähnle wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> It looks as if the structure fields array is fully initialized below,
> but in fact at least gcc in debug builds will not actually overwrite
> the unused bits of bit fields.
> ---
> src/compiler/glsl_types.cpp | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp
> index 9d853caf721..9ebf6a433bd 100644
> --- a/src/compiler/glsl_types.cpp
> +++ b/src/compiler/glsl_types.cpp
> @@ -98,22 +98,24 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields,
> vector_elements(0), matrix_columns(0),
> length(num_fields)
> {
> unsigned int i;
>
> this->mem_ctx = ralloc_context(NULL);
> assert(this->mem_ctx != NULL);
>
> assert(name != NULL);
> this->name = ralloc_strdup(this->mem_ctx, name);
> - this->fields.structure = ralloc_array(this->mem_ctx,
> - glsl_struct_field, length);
> + /* Zero-fill to prevent spurious Valgrind errors when serializing NIR
> + * due to uninitialized unused bits in bit fields. */
> + this->fields.structure = rzalloc_array(this->mem_ctx,
> + glsl_struct_field, length);
>
> for (i = 0; i < length; i++) {
> this->fields.structure[i] = fields[i];
> this->fields.structure[i].name = ralloc_strdup(this->fields.structure,
> fields[i].name);
> }
> }
>
> glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields,
> enum glsl_interface_packing packing,
>
More information about the mesa-dev
mailing list