ptr = r_inline_result;
r_any_inlined = true;
}
+ r_inline_result = 0;
}
void FunctionInliner::visit(Block &block)
void FunctionInliner::visit(UnaryExpression &unary)
{
visit_and_inline(unary.expression);
- r_inline_result = 0;
}
void FunctionInliner::visit(BinaryExpression &binary)
{
visit_and_inline(binary.left);
visit_and_inline(binary.right);
- r_inline_result = 0;
}
void FunctionInliner::visit(MemberAccess &memacc)
{
visit_and_inline(memacc.left);
- r_inline_result = 0;
}
void FunctionInliner::visit(FunctionCall &call)
inlined further. */
inlineable.erase(current_function);
}
- else
- r_inline_result = 0;
}
void FunctionInliner::visit(ExpressionStatement &expr)
{
if(var.init_expression)
visit_and_inline(var.init_expression);
- r_inline_result = 0;
}
void FunctionInliner::visit(FunctionDeclaration &func)
r_ref_info->inline_on_rhs = on_rhs;
}
}
+ r_ref_info = 0;
}
void ExpressionInliner::inline_expression(Expression &expr, RefPtr<Expression> &ptr, const Operator *outer_oper, const Operator *inner_oper, bool on_rhs)
void ExpressionInliner::visit(MemberAccess &memacc)
{
visit_and_record(memacc.left, memacc.oper, false);
- r_ref_info = 0;
r_oper = memacc.oper;
r_trivial = false;
}
{
SetFlag set_target(mutating, mutating || unary.oper->token[1]=='+' || unary.oper->token[1]=='-');
visit_and_record(unary.expression, unary.oper, false);
- r_ref_info = 0;
r_oper = unary.oper;
r_trivial = false;
}
SetFlag clear_target(mutating, false);
visit_and_record(binary.right, binary.oper, true);
}
- r_ref_info = 0;
r_oper = binary.oper;
r_trivial = false;
}
}
}
- r_ref_info = 0;
r_oper = assign.oper;
r_trivial = false;
}
{
for(NodeArray<Expression>::iterator i=call.arguments.begin(); i!=call.arguments.end(); ++i)
visit_and_record(*i, 0, false);
- r_ref_info = 0;
r_oper = 0;
r_trivial = false;
}
return !unused_nodes.empty();
}
+void UnusedTypeRemover::visit(Literal &literal)
+{
+ unused_nodes.erase(literal.type);
+}
+
+void UnusedTypeRemover::visit(UnaryExpression &unary)
+{
+ unused_nodes.erase(unary.type);
+ TraversingVisitor::visit(unary);
+}
+
+void UnusedTypeRemover::visit(BinaryExpression &binary)
+{
+ unused_nodes.erase(binary.type);
+ TraversingVisitor::visit(binary);
+}
+
+void UnusedTypeRemover::visit(FunctionCall &call)
+{
+ unused_nodes.erase(call.type);
+ TraversingVisitor::visit(call);
+}
+
void UnusedTypeRemover::visit(BasicTypeDeclaration &type)
{
if(type.base_type)
void UnusedTypeRemover::visit(StructDeclaration &strct)
{
unused_nodes.insert(&strct);
+ TraversingVisitor::visit(strct);
}
void UnusedTypeRemover::visit(VariableDeclaration &var)