diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2010-03-25 17:01:15 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-03-25 17:01:15 -0700 |
commit | 954699773681842dac9f8f0d9ba4629513232196 (patch) | |
tree | b1a47ebcc74101160bc865ea4b1b91ac61d46272 | |
parent | 720c88eab902923123b0625f133e9ef5912f0e3f (diff) |
Add dereference constructor for array element dereferences
This should have gone in before the previous commit.
-rw-r--r-- | ir.cpp | 10 | ||||
-rw-r--r-- | ir.h | 4 |
2 files changed, 13 insertions, 1 deletions
@@ -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) @@ -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; |