Don't append return to void procedures
This commit is contained in:
parent
b45b00a3f6
commit
daed398644
@ -160,16 +160,13 @@ namespace gcc
|
|||||||
|
|
||||||
this->symbol_map->enter(definition->identifier(), source::make_info(this->main_fndecl));
|
this->symbol_map->enter(definition->identifier(), source::make_info(this->main_fndecl));
|
||||||
|
|
||||||
tree resdecl = build_decl(UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, integer_type_node);
|
tree resdecl = build_decl(UNKNOWN_LOCATION, RESULT_DECL,
|
||||||
|
NULL_TREE, TREE_TYPE(TREE_TYPE(this->main_fndecl)));
|
||||||
DECL_CONTEXT(resdecl) = this->main_fndecl;
|
DECL_CONTEXT(resdecl) = this->main_fndecl;
|
||||||
DECL_RESULT(this->main_fndecl) = resdecl;
|
DECL_RESULT(this->main_fndecl) = resdecl;
|
||||||
tree set_result = build2(INIT_EXPR, void_type_node, DECL_RESULT(main_fndecl),
|
|
||||||
build_int_cst_type(integer_type_node, 0));
|
|
||||||
tree return_stmt = build1(RETURN_EXPR, void_type_node, set_result);
|
|
||||||
|
|
||||||
enter_scope();
|
enter_scope();
|
||||||
definition->body().accept(this);
|
definition->body().accept(this);
|
||||||
append_to_statement_list(return_stmt, &this->current_statements);
|
|
||||||
|
|
||||||
tree_symbol_mapping mapping = leave_scope();
|
tree_symbol_mapping mapping = leave_scope();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user