X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fglsl%2Foptimize.cpp;h=4f1f8629a58f46964fc34ba7bb11e172b39f2037;hp=208e17a39b49e6fe1fd92f10b31e65808e77068b;hb=99719790df8a1215465a68c7b1d87a495bff87eb;hpb=48fa4e32b654aa1f2107caf266c3bdda9cc74847 diff --git a/source/glsl/optimize.cpp b/source/glsl/optimize.cpp index 208e17a3..4f1f8629 100644 --- a/source/glsl/optimize.cpp +++ b/source/glsl/optimize.cpp @@ -124,8 +124,6 @@ void FunctionInliner::visit(Return &ret) ConstantConditionEliminator::ConstantConditionEliminator(): - scope_level(0), - current_block(0), record_only(false) { } @@ -137,7 +135,6 @@ void ConstantConditionEliminator::apply(Stage &stage) void ConstantConditionEliminator::visit(Block &block) { - SetForScope set(scope_level, scope_level+1); SetForScope set_block(current_block, &block); for(NodeList::iterator i=block.body.begin(); i!=block.body.end(); ++i) { @@ -163,7 +160,7 @@ void ConstantConditionEliminator::visit(Assignment &assign) void ConstantConditionEliminator::visit(VariableDeclaration &var) { - if(var.constant || scope_level>1) + if(var.constant || current_block->parent) variable_values[&var] = var.init_expression.get(); } @@ -228,8 +225,7 @@ UnusedVariableRemover::UnusedVariableRemover(): aggregate(0), assignment(0), assignment_target(false), - assign_to_subscript(false), - global_scope(true) + assign_to_subscript(false) { } bool UnusedVariableRemover::apply(Stage &stage) @@ -358,12 +354,9 @@ void UnusedVariableRemover::visit(FunctionDeclaration &func) { variables.push_back(BlockVariableMap()); - { - SetForScope set(global_scope, false); - for(NodeArray::iterator i=func.parameters.begin(); i!=func.parameters.end(); ++i) - (*i)->visit(*this); - func.body.visit(*this); - } + for(NodeArray::iterator i=func.parameters.begin(); i!=func.parameters.end(); ++i) + (*i)->visit(*this); + func.body.visit(*this); BlockVariableMap &block_variables = variables.back(); for(BlockVariableMap::iterator i=block_variables.begin(); i!=block_variables.end(); ++i)