ir_to_mesa: Add several assertions about sizes of arrays
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 25 Jan 2011 19:50:04 +0000 (11:50 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 25 Jan 2011 21:41:26 +0000 (13:41 -0800)
Both of these assertions are triggered by the test case in bugzilla
size of 0.

src/mesa/program/ir_to_mesa.cpp

index 786fdfbd231d9b71e84d1c82f8f66de6b0ff712d..ee3eae6cfb042904dd5e591ecce638065823c1dd 100644 (file)
@@ -651,6 +651,7 @@ type_size(const struct glsl_type *type)
         return 1;
       }
    case GLSL_TYPE_ARRAY:
+      assert(type->length > 0);
       return type_size(type->fields.array) * type->length;
    case GLSL_TYPE_STRUCT:
       size = 0;
@@ -2653,6 +2654,9 @@ ir_to_mesa_visitor::copy_propagate(void)
    foreach_iter(exec_list_iterator, iter, this->instructions) {
       ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get();
 
+      assert(inst->dst_reg.file != PROGRAM_TEMPORARY
+            || inst->dst_reg.index < this->next_temp);
+
       /* First, do any copy propagation possible into the src regs. */
       for (int r = 0; r < 3; r++) {
         ir_to_mesa_instruction *first = NULL;