BlockVariableMap &block_variables = variables.back();
for(BlockVariableMap::iterator i=block_variables.begin(); i!=block_variables.end(); ++i)
i->second.conditionally_assigned = true;
+ for(vector<RefPtr<VariableDeclaration> >::iterator i=func.parameters.begin(); i!=func.parameters.end(); ++i)
+ block_variables[i->get()].referenced = true;
merge_down_variables();
}
{
TraversingVisitor::visit(func);
- if(func.name!="main" && !used_definitions.count(&func))
+ if((func.name!="main" || func.body.body.empty()) && !used_definitions.count(&func))
unused_nodes.insert(&func);
}