ir_reader: rvalues are instructions too!
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 12 Apr 2010 21:25:41 +0000 (14:25 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 29 Apr 2010 01:14:54 +0000 (18:14 -0700)
ir_reader.cpp

index 0c41fb1..9eadce2 100644 (file)
@@ -177,15 +177,17 @@ read_instruction(_mesa_glsl_parse_state *st, s_expression *expr)
    }
 
    ir_instruction *inst = NULL;
-   if (strcmp(tag->value(), "declare") == 0)
+   if (strcmp(tag->value(), "declare") == 0) {
       inst = read_declaration(st, list);
-   else if (strcmp(tag->value(), "if") == 0)
+   } else if (strcmp(tag->value(), "if") == 0) {
       inst = read_if(st, list);
-   else if (strcmp(tag->value(), "return") == 0)
+   } else if (strcmp(tag->value(), "return") == 0) {
       inst = read_return(st, list);
-   else
-      ir_read_error(expr, "unrecognized instruction tag: %s", tag->value());
-
+   } else {
+      inst = read_rvalue(st, list);
+      if (inst == NULL)
+        ir_read_error(list, "when reading instruction");
+   }
    return inst;
 }