[Mesa-dev] [PATCH 06/61] nir/validator: Validate that all used variables exist
Kenneth Graunke
kenneth at whitecape.org
Thu Mar 29 21:19:21 UTC 2018
On Friday, March 23, 2018 2:42:12 PM PDT Jason Ekstrand wrote:
> We were validating this for locals but nothing else.
> ---
> src/compiler/nir/nir_validate.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
> index a49948f..e9d6bd5 100644
> --- a/src/compiler/nir/nir_validate.c
> +++ b/src/compiler/nir/nir_validate.c
> @@ -96,7 +96,9 @@ typedef struct {
> /* bitset of registers we have currently found; used to check uniqueness */
> BITSET_WORD *regs_found;
>
> - /* map of local variable -> function implementation where it is defined */
> + /* map of variable -> function implementation where it is defined or NULL
> + * if it is a global variable
> + */
> struct hash_table *var_defs;
>
> /* map of instruction/var/etc to failed assert string */
> @@ -448,12 +450,10 @@ validate_deref_chain(nir_deref *deref, nir_variable_mode mode,
> static void
> validate_var_use(nir_variable *var, validate_state *state)
> {
> - if (var->data.mode == nir_var_local) {
> - struct hash_entry *entry = _mesa_hash_table_search(state->var_defs, var);
> -
> - validate_assert(state, entry);
> + struct hash_entry *entry = _mesa_hash_table_search(state->var_defs, var);
> + validate_assert(state, entry);
> + if (var->data.mode == nir_var_local)
> validate_assert(state, (nir_function_impl *) entry->data == state->impl);
> - }
> }
>
> static void
> @@ -1000,7 +1000,9 @@ validate_var_decl(nir_variable *var, bool is_global, validate_state *state)
> * support)
> */
>
> - if (!is_global) {
> + if (is_global) {
> + _mesa_hash_table_insert(state->var_defs, var, NULL);
> + } else {
> _mesa_hash_table_insert(state->var_defs, var, state->impl);
> }
I'd personally do
_mesa_hash_table_insert(state->var_defs, var,
is_global ? NULL : state->impl);
since we want to insert into the same set either way, just with NULL for
the impl if there isn't one. Doesn't matter though, your call.
Patches 1-6 are:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180329/4a785cc0/attachment.sig>
More information about the mesa-dev
mailing list