summaryrefslogtreecommitdiff
path: root/ir_constant_folding.cpp
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-04-06 11:42:01 -0700
committerEric Anholt <eric@anholt.net>2010-04-06 11:42:34 -0700
commite5a9e70cde3dda27dca045b12c5a818215b1a449 (patch)
tree21fc127b59b2a08cb101673ace69e8a9d983dace /ir_constant_folding.cpp
parentbae5be356eef9efd893e8937d11ecb1b5f3feee6 (diff)
Descend down the tree in more locations in constant folding.
Diffstat (limited to 'ir_constant_folding.cpp')
-rw-r--r--ir_constant_folding.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/ir_constant_folding.cpp b/ir_constant_folding.cpp
index 006eb5f..eabdc24 100644
--- a/ir_constant_folding.cpp
+++ b/ir_constant_folding.cpp
@@ -73,6 +73,8 @@ ir_constant_folding_visitor::visit(ir_expression *ir)
op[operand] = ir->operands[operand]->constant_expression_value();
if (op[operand]) {
ir->operands[operand] = op[operand];
+ } else {
+ ir->operands[operand]->accept(this);
}
}
}
@@ -81,7 +83,7 @@ ir_constant_folding_visitor::visit(ir_expression *ir)
void
ir_constant_folding_visitor::visit(ir_swizzle *ir)
{
- (void) ir;
+ ir->val->accept(this);
}