From 954699773681842dac9f8f0d9ba4629513232196 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 25 Mar 2010 17:01:15 -0700 Subject: [PATCH] Add dereference constructor for array element dereferences This should have gone in before the previous commit. --- ir.cpp | 10 ++++++++++ ir.h | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ir.cpp b/ir.cpp index ad75cdad73c..1b5947a4704 100644 --- a/ir.cpp +++ b/ir.cpp @@ -87,6 +87,16 @@ ir_dereference::ir_dereference(ir_instruction *var) } +ir_dereference::ir_dereference(ir_instruction *var, + ir_instruction *array_index) + : ir_instruction(ir_op_dereference), mode(ir_reference_array), + var(var) +{ + this->type = (var != NULL) ? var->type : glsl_error_type; + this->selector.array_index = array_index; +} + + void ir_dereference::set_swizzle(unsigned x, unsigned y, unsigned z, unsigned w, unsigned count) diff --git a/ir.h b/ir.h index 530c7326a35..22b46c971e8 100644 --- a/ir.h +++ b/ir.h @@ -393,6 +393,8 @@ class ir_dereference : public ir_instruction { public: ir_dereference(struct ir_instruction *); + ir_dereference(ir_instruction *variable, ir_instruction *array_index); + virtual void accept(ir_visitor *v) { v->visit(this); @@ -419,7 +421,7 @@ public: ir_instruction *var; union { - ir_expression *array_index; + ir_instruction *array_index; const char *field; struct ir_swizzle_mask swizzle; } selector; -- 2.30.2