ir_reader: Return a specific ir_dereference variant.
authorKenneth Graunke <kenneth@whitecape.org>
Sun, 31 Oct 2010 05:29:07 +0000 (22:29 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 3 Nov 2010 20:39:42 +0000 (13:39 -0700)
There's really no reason to return the base class when we have more
specific information about what type it is.

src/glsl/ir_reader.cpp

index a9cbf8e..99e2585 100644 (file)
@@ -64,9 +64,12 @@ static ir_texture *read_texture(_mesa_glsl_parse_state *, s_list *);
 
 static ir_dereference *read_dereference(_mesa_glsl_parse_state *,
                                        s_expression *);
-static ir_dereference *read_var_ref(_mesa_glsl_parse_state *, s_list *);
-static ir_dereference *read_array_ref(_mesa_glsl_parse_state *, s_list *);
-static ir_dereference *read_record_ref(_mesa_glsl_parse_state *, s_list *);
+static ir_dereference_variable *
+read_var_ref(_mesa_glsl_parse_state *, s_list *);
+static ir_dereference_array *
+read_array_ref(_mesa_glsl_parse_state *, s_list *);
+static ir_dereference_record *
+read_record_ref(_mesa_glsl_parse_state *, s_list *);
 
 void
 _mesa_glsl_read_ir(_mesa_glsl_parse_state *state, exec_list *instructions,
@@ -930,7 +933,7 @@ read_dereference(_mesa_glsl_parse_state *st, s_expression *expr)
    return NULL;
 }
 
-static ir_dereference *
+static ir_dereference_variable *
 read_var_ref(_mesa_glsl_parse_state *st, s_list *list)
 {
    void *ctx = st;
@@ -953,7 +956,7 @@ read_var_ref(_mesa_glsl_parse_state *st, s_list *list)
    return new(ctx) ir_dereference_variable(var);
 }
 
-static ir_dereference *
+static ir_dereference_array *
 read_array_ref(_mesa_glsl_parse_state *st, s_list *list)
 {
    void *ctx = st;
@@ -974,7 +977,7 @@ read_array_ref(_mesa_glsl_parse_state *st, s_list *list)
    return new(ctx) ir_dereference_array(subject, idx);
 }
 
-static ir_dereference *
+static ir_dereference_record *
 read_record_ref(_mesa_glsl_parse_state *st, s_list *list)
 {
    void *ctx = st;