Now that the constructors set a type, ir_type_unset is not very useful. Move it to the end of the enum (specifically out of position 0) so that enums checks for dereferences and rvalues can save an instruction. --- Could also get rid of ir_type_unset completely by replacing its uses with ir_type_max or something.
src/glsl/ir.h | 8 ++------ src/glsl/ir_validate.cpp | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 57552e0..585c31c 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -59,11 +59,6 @@ * types, this allows writing very straightforward, readable code. */ enum ir_node_type { - /** - * Zero is unused so that the IR validator can detect cases where - * \c ir_instruction::ir_type has not been initialized. - */ - ir_type_unset, ir_type_dereference_array, ir_type_dereference_record, ir_type_dereference_variable, @@ -83,7 +78,8 @@ enum ir_node_type { ir_type_discard, ir_type_emit_vertex, ir_type_end_primitive, - ir_type_max /**< maximum ir_type enum number, for validation */ + ir_type_max, /**< maximum ir_type enum number, for validation */ + ir_type_unset = ir_type_max }; diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp index 71defc8..17a74ea 100644 --- a/src/glsl/ir_validate.cpp +++ b/src/glsl/ir_validate.cpp @@ -795,7 +795,7 @@ check_node_type(ir_instruction *ir, void *data) { (void) data; - if (ir->ir_type <= ir_type_unset || ir->ir_type >= ir_type_max) { + if (ir->ir_type >= ir_type_max) { printf("Instruction node with unset type\n"); ir->print(); printf("\n"); } -- 1.8.3.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev