summaryrefslogtreecommitdiff
path: root/ir.h
diff options
context:
space:
mode:
Diffstat (limited to 'ir.h')
-rw-r--r--ir.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/ir.h b/ir.h
index cb153be77d..504cffb2d5 100644
--- a/ir.h
+++ b/ir.h
@@ -54,11 +54,13 @@ public:
virtual class ir_variable * as_variable() { return NULL; }
virtual class ir_dereference * as_dereference() { return NULL; }
virtual class ir_rvalue * as_rvalue() { return NULL; }
+ virtual class ir_label * as_label() { return NULL; }
virtual class ir_loop * as_loop() { return NULL; }
virtual class ir_assignment * as_assignment() { return NULL; }
virtual class ir_call * as_call() { return NULL; }
virtual class ir_return * as_return() { return NULL; }
virtual class ir_if * as_if() { return NULL; }
+ virtual class ir_swizzle * as_swizzle() { return NULL; }
/*@}*/
protected:
@@ -185,6 +187,11 @@ class ir_label : public ir_instruction {
public:
ir_label(const char *label, ir_function_signature *signature);
+ virtual ir_label *as_label()
+ {
+ return this;
+ }
+
virtual void accept(ir_visitor *v)
{
v->visit(this);
@@ -681,6 +688,11 @@ public:
/* empty */
}
+ virtual ir_swizzle *as_swizzle()
+ {
+ return this;
+ }
+
ir_swizzle *clone()
{
return new ir_swizzle(this->val, this->mask);