void InlineableFunctionLocator::visit(FunctionCall &call)
{
FunctionDeclaration *def = call.declaration;
- if(def && def->definition!=def)
+ if(def)
def = def->definition;
if(def)
visit_and_inline(*i);
FunctionDeclaration *def = call.declaration;
- if(def && def->definition!=def)
+ if(def)
def = def->definition;
if(def && inlineable.count(def))
if(var.declaration && !assignment_target)
{
VariableInfo &var_info = variables.back()[var.declaration];
- var_info.assignments.clear();
+ clear_assignments(var_info, false);
var_info.referenced = true;
}
}
BlockVariableMap &block_variables = variables.back();
for(BlockVariableMap::iterator i=block_variables.begin(); i!=block_variables.end(); ++i)
if(!i->second.local && i->second.referenced)
- i->second.assignments.clear();
+ clear_assignments(i->second, false);
merge_down_variables();
}