Mesa (master): spirv: Add better error messages in vtn_value helpers
Jason Ekstrand
jekstrand at kemper.freedesktop.org
Mon Jan 8 23:16:06 UTC 2018
Module: Mesa
Branch: master
Commit: 296046556ac89cae6ad73f4195025ffd2203c919
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=296046556ac89cae6ad73f4195025ffd2203c919
Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date: Mon Dec 11 21:42:34 2017 -0800
spirv: Add better error messages in vtn_value helpers
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
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 7cb69d7843..f7d8f49c98 100644
--- a/src/compiler/spirv/vtn_private.h
+++ b/src/compiler/spirv/vtn_private.h
@@ -585,14 +585,24 @@ 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];
}
@@ -612,18 +622,12 @@ vtn_push_ssa(struct vtn_builder *b, uint32_t value_id,
}
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;
}
More information about the mesa-commit
mailing list