From 296046556ac89cae6ad73f4195025ffd2203c919 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 11 Dec 2017 21:42:34 -0800 Subject: [PATCH] spirv: Add better error messages in vtn_value helpers Reviewed-by: Lionel Landwerlin --- src/compiler/spirv/vtn_private.h | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h index 7cb69d78430..f7d8f49c98e 100644 --- a/src/compiler/spirv/vtn_private.h +++ b/src/compiler/spirv/vtn_private.h @@ -584,15 +584,25 @@ struct vtn_pointer * vtn_pointer_from_ssa(struct vtn_builder *b, nir_ssa_def *ssa, struct vtn_type *ptr_type); +static inline struct vtn_value * +vtn_untyped_value(struct vtn_builder *b, uint32_t value_id) +{ + vtn_fail_if(value_id >= b->value_id_bound, + "SPIR-V id %u is out-of-bounds", value_id); + return &b->values[value_id]; +} + static inline struct vtn_value * vtn_push_value(struct vtn_builder *b, uint32_t value_id, enum vtn_value_type value_type) { - assert(value_id < b->value_id_bound); - assert(b->values[value_id].value_type == vtn_value_type_invalid); + struct vtn_value *val = vtn_untyped_value(b, value_id); - b->values[value_id].value_type = value_type; + vtn_fail_if(val->value_type != vtn_value_type_invalid, + "SPIR-V id %u has already been written by another instruction", + value_id); + val->value_type = value_type; return &b->values[value_id]; } @@ -611,19 +621,13 @@ vtn_push_ssa(struct vtn_builder *b, uint32_t value_id, return val; } -static inline struct vtn_value * -vtn_untyped_value(struct vtn_builder *b, uint32_t value_id) -{ - assert(value_id < b->value_id_bound); - return &b->values[value_id]; -} - static inline struct vtn_value * vtn_value(struct vtn_builder *b, uint32_t value_id, enum vtn_value_type value_type) { struct vtn_value *val = vtn_untyped_value(b, value_id); - assert(val->value_type == value_type); + vtn_fail_if(val->value_type != value_type, + "SPIR-V id %u is the wrong kind of value", value_id); return val; } -- 2.30.2