summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Berry <stereotype441@gmail.com>2013-04-09 10:03:11 -0700
committerPaul Berry <stereotype441@gmail.com>2013-04-09 10:19:22 -0700
commit778ce82b71c75d2c13f38b3504a4f18453330be2 (patch)
treec1621f72a4b389821b51b5bb781baa5b19d8d0a0
parent67f226e179b7116379506f7b2c6c8d2b49ab97b2 (diff)
glsl: Check the size of ir_print_visitor's mode[] array with STATIC_ASSERT.
ir_print_visitor::visit(ir_variable *)'s mode[] array needs to match the declaration of the enum ir_variable_mode. It's hard to verify that at compile time, but at least we can use a STATIC_ASSERT to make sure it's the right size. This required adding ir_var_mode_count to the enum.
-rw-r--r--src/glsl/ir.h3
-rw-r--r--src/glsl/ir_print_visitor.cpp1
2 files changed, 3 insertions, 1 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 0c3e39979a3..3018e0fbb16 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -273,7 +273,8 @@ enum ir_variable_mode {
ir_var_function_inout,
ir_var_const_in, /**< "in" param that must be a constant expression */
ir_var_system_value, /**< Ex: front-face, instance-id, etc. */
- ir_var_temporary /**< Temporary variable generated during compilation. */
+ ir_var_temporary, /**< Temporary variable generated during compilation. */
+ ir_var_mode_count /**< Number of variable modes */
};
/**
diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp
index fb0dd08f810..f01019c9877 100644
--- a/src/glsl/ir_print_visitor.cpp
+++ b/src/glsl/ir_print_visitor.cpp
@@ -150,6 +150,7 @@ void ir_print_visitor::visit(ir_variable *ir)
const char *const mode[] = { "", "uniform ", "shader_in ", "shader_out ",
"in ", "out ", "inout ",
"const_in ", "sys ", "temporary " };
+ STATIC_ASSERT(ARRAY_SIZE(mode) == ir_var_mode_count);
const char *const interp[] = { "", "smooth", "flat", "noperspective" };
STATIC_ASSERT(ARRAY_SIZE(interp) == INTERP_QUALIFIER_COUNT);