From 63af4b0e99420efd5ad6ecb638f39dc2c5c5e3cf Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 1 Apr 2010 18:02:48 -0700 Subject: [PATCH] Fix type handling in ir_dereference array dereference constructor --- ir.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ir.cpp b/ir.cpp index 90df67b..60f34ca 100644 --- a/ir.cpp +++ b/ir.cpp @@ -117,7 +117,18 @@ ir_dereference::ir_dereference(ir_instruction *var, : ir_rvalue(), mode(ir_reference_array), var(var) { - this->type = (var != NULL) ? var->type : glsl_type::error_type; + type = glsl_type::error_type; + + if (var != NULL) { + const glsl_type *const vt = var->type; + + if (vt->is_array()) { + type = vt->element_type(); + } else if (vt->is_matrix() || vt->is_vector()) { + type = vt->get_base_type(); + } + } + this->selector.array_index = array_index; } -- 2.7.4