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