[Mesa-dev] [PATCH 1/5] nir: Make nir_block_{first, last}_instr return NULL for empty blocks.

Jason Ekstrand jason at jlekstrand.net
Thu Aug 27 11:45:21 PDT 2015


On Tue, Aug 25, 2015 at 1:24 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> This is a lot more reasonable than returning an offset from NULL.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/glsl/nir/nir.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
> index 40871f7..12ddeb2 100644
> --- a/src/glsl/nir/nir.h
> +++ b/src/glsl/nir/nir.h
> @@ -1219,14 +1219,14 @@ static inline nir_instr *
>  nir_block_first_instr(nir_block *block)
>  {
>     struct exec_node *head = exec_list_get_head(&block->instr_list);
> -   return exec_node_data(nir_instr, head, node);
> +   return head ? exec_node_data(nir_instr, head, node) : NULL;

node is the first element of nir_instr so this is a no-op.  Perhaps we
should instead just add a

STATIC_ASSERT(offsetof(nir_instr, node) == 0)

and a comment.

>  }
>
>  static inline nir_instr *
>  nir_block_last_instr(nir_block *block)
>  {
>     struct exec_node *tail = exec_list_get_tail(&block->instr_list);
> -   return exec_node_data(nir_instr, tail, node);
> +   return tail ? exec_node_data(nir_instr, tail, node) : NULL;
>  }
>
>  #define nir_foreach_instr(block, instr) \
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list