Mesa (master): glsl: Check the size of ir_print_visitor's mode[] array with STATIC_ASSERT.
Paul Berry
stereotype441 at kemper.freedesktop.org
Tue Apr 9 17:21:41 UTC 2013
Module: Mesa
Branch: master
Commit: 778ce82b71c75d2c13f38b3504a4f18453330be2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=778ce82b71c75d2c13f38b3504a4f18453330be2
Author: Paul Berry <stereotype441 at gmail.com>
Date: Tue Apr 9 10:03:11 2013 -0700
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.
---
src/glsl/ir.h | 3 ++-
src/glsl/ir_print_visitor.cpp | 1 +
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 0c3e399..3018e0f 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 fb0dd08..f01019c 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);
More information about the mesa-commit
mailing list