X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Foptimize.cpp;h=bdaced5c46029299e531b8f3cdbd5055651bc539;hp=68d3f1d77a9b1233701629b2f27b319bfec43e3d;hb=72a02f2f3f1c454aa670b256262d7bc0541222e3;hpb=4c11957c4e26b2c369f0399c85bafcb6eb58edd4 diff --git a/source/glsl/optimize.cpp b/source/glsl/optimize.cpp index 68d3f1d7..bdaced5c 100644 --- a/source/glsl/optimize.cpp +++ b/source/glsl/optimize.cpp @@ -1010,6 +1010,7 @@ UnusedVariableRemover::UnusedVariableRemover(): r_assignment(0), assignment_target(false), r_side_effects(false), + in_struct(false), composite_reference(false) { } @@ -1233,8 +1234,19 @@ void UnusedVariableRemover::visit(ExpressionStatement &expr) unused_nodes.insert(&expr); } +void UnusedVariableRemover::visit(StructDeclaration &strct) +{ + SetFlag set_struct(in_struct); + TraversingVisitor::visit(strct); +} + void UnusedVariableRemover::visit(VariableDeclaration &var) { + TraversingVisitor::visit(var); + + if(in_struct) + return; + VariableInfo &var_info = variables[&var]; var_info.interface_block = interface_block; @@ -1250,7 +1262,6 @@ void UnusedVariableRemover::visit(VariableDeclaration &var) var_info.initialized = true; record_assignment(&var, *var.init_expression); } - TraversingVisitor::visit(var); } void UnusedVariableRemover::visit(InterfaceBlock &iface)