[Mesa-dev] [PATCH] glsl: move array_sizing_visitor class outside of link_intrastage_shaders()

Brian Paul brian.e.paul at gmail.com
Mon Jan 30 12:08:15 PST 2012


From: Brian Paul <brianp at vmware.com>

To silence warnings with gcc 4.4.x on Linux and llvm-g++ 4.2 on Mac.
---
 src/glsl/linker.cpp |   38 ++++++++++++++++++++++----------------
 1 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 5095751..82bddb0 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -856,6 +856,27 @@ get_main_function_signature(gl_shader *sh)
 
 
 /**
+ * This class is only used in link_intrastage_shaders() below but declaring
+ * it inside that function leads to compiler warnings with some versions of
+ * gcc.
+ */
+class array_sizing_visitor : public ir_hierarchical_visitor {
+public:
+   virtual ir_visitor_status visit(ir_variable *var)
+   {
+      if (var->type->is_array() && (var->type->length == 0)) {
+         const glsl_type *type =
+            glsl_type::get_array_instance(var->type->fields.array,
+                                          var->max_array_access + 1);
+         assert(type != NULL);
+         var->type = type;
+      }
+      return visit_continue;
+   }
+};
+
+
+/**
  * Combine a group of shaders for a single stage to generate a linked shader
  *
  * \note
@@ -1005,22 +1026,7 @@ link_intrastage_shaders(void *mem_ctx,
     * max_array_access field.
     */
    if (linked != NULL) {
-      class array_sizing_visitor : public ir_hierarchical_visitor {
-      public:
-	 virtual ir_visitor_status visit(ir_variable *var)
-	 {
-	    if (var->type->is_array() && (var->type->length == 0)) {
-	       const glsl_type *type =
-		  glsl_type::get_array_instance(var->type->fields.array,
-						var->max_array_access + 1);
-
-	       assert(type != NULL);
-	       var->type = type;
-	    }
-
-	    return visit_continue;
-	 }
-      } v;
+      array_sizing_visitor v;
 
       v.run(linked->ir);
    }
-- 
1.7.1



More information about the mesa-dev mailing list