using TraversingVisitor::visit;
};
-class ConstantConditionEliminator: private BlockModifier
+class ConstantConditionEliminator: private TraversingVisitor
{
private:
unsigned scope_level;
+ Block *current_block;
bool record_only;
ExpressionEvaluator::ValueMap variable_values;
+ NodeList<Statement>::iterator insert_point;
+ std::set<Node *> nodes_to_remove;
public:
ConstantConditionEliminator();
- void apply(Stage &s) { visit(s.content); }
+ void apply(Stage &);
private:
virtual void visit(Block &);
virtual void visit(VariableDeclaration &);
virtual void visit(Conditional &);
virtual void visit(Iteration &);
- using BlockModifier::visit;
+ using TraversingVisitor::visit;
};
class UnusedVariableRemover: private TraversingVisitor