summaryrefslogtreecommitdiff
path: root/ir_constant_folding.cpp
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-04-06 10:07:20 -0700
committerEric Anholt <eric@anholt.net>2010-04-06 11:42:34 -0700
commit3fff009af169313fa22996d93ad195cf12729763 (patch)
tree5abf26947b5438607930ef1c3675b38986481b2e /ir_constant_folding.cpp
parentec1949e8041b63f59aab63440ad9eeeddd226ce3 (diff)
Fold constant expressions in if conditionals.
Fixes up 3 more expressions in CorrectParse2.frag.
Diffstat (limited to 'ir_constant_folding.cpp')
-rw-r--r--ir_constant_folding.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/ir_constant_folding.cpp b/ir_constant_folding.cpp
index 306f211fe5..b9dee37edf 100644
--- a/ir_constant_folding.cpp
+++ b/ir_constant_folding.cpp
@@ -127,5 +127,9 @@ ir_constant_folding_visitor::visit(ir_return *ir)
void
ir_constant_folding_visitor::visit(ir_if *ir)
{
- (void) ir;
+ ir_constant *const_val = ir->condition->constant_expression_value();
+ if (const_val)
+ ir->condition = const_val;
+ else
+ ir->condition->accept(this);
}