X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Foptimize.cpp;h=8f6b2745846b0a31e285a746dca714bfa3227332;hb=3a1fe833ea04df75449706f1d773f6e65521a392;hp=9ab8ef70ef94dfc235e08ecee479792f9ae9cf2b;hpb=7335009e18ecbf53ad9f59d64eed2ed5abbe7b8b;p=libs%2Fgl.git diff --git a/source/glsl/optimize.cpp b/source/glsl/optimize.cpp index 9ab8ef70..8f6b2745 100644 --- a/source/glsl/optimize.cpp +++ b/source/glsl/optimize.cpp @@ -452,6 +452,15 @@ void ExpressionInliner::visit(Assignment &assign) r_trivial = false; } +void ExpressionInliner::visit(TernaryExpression &ternary) +{ + visit_and_record(ternary.condition, ternary.oper, false); + visit_and_record(ternary.true_expr, ternary.oper, false); + visit_and_record(ternary.false_expr, ternary.oper, true); + r_oper = ternary.oper; + r_trivial = false; +} + void ExpressionInliner::visit(FunctionCall &call) { TraversingVisitor::visit(call); @@ -581,6 +590,12 @@ void UnusedTypeRemover::visit(BinaryExpression &binary) TraversingVisitor::visit(binary); } +void UnusedTypeRemover::visit(TernaryExpression &ternary) +{ + unused_nodes.erase(ternary.type); + TraversingVisitor::visit(ternary); +} + void UnusedTypeRemover::visit(FunctionCall &call) { unused_nodes.erase(call.type);