authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-09-20 13:08:02-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-09-20 13:08:02-04:00
logb1e04865cc2313886238e4361dcf2c849b9ecd7b
tree013a583565a12107fae127711864755d8670b76b
parent3c41c2d84b8de5a95a322a3f0d8424adf6df8667

parsec: don't make pointless block in fn body


1 files changed, 7 insertions(+), 4 deletions(-)

src/parsec.cpp+7-4
...@@ -2241,7 +2241,8 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {...@@ -2241,7 +2241,8 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
22412241
2242 // it worked2242 // it worked
22432243
2244 AstNode *parameter_init_block = trans_create_node(c, NodeTypeBlock);2244 assert(actual_body_node->type == NodeTypeBlock);
2245 AstNode *body_node_with_param_inits = trans_create_node(c, NodeTypeBlock);
22452246
2246 for (size_t i = 0; i < proto_node->data.fn_proto.params.length; i += 1) {2247 for (size_t i = 0; i < proto_node->data.fn_proto.params.length; i += 1) {
2247 AstNode *param_node = proto_node->data.fn_proto.params.at(i);2248 AstNode *param_node = proto_node->data.fn_proto.params.at(i);
...@@ -2253,14 +2254,16 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {...@@ -2253,14 +2254,16 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
2253 // var c_name = _mangled_name;2254 // var c_name = _mangled_name;
2254 AstNode *parameter_init = trans_create_node_var_decl_local(c, false, good_name, nullptr, trans_create_node_symbol(c, mangled_name));2255 AstNode *parameter_init = trans_create_node_var_decl_local(c, false, good_name, nullptr, trans_create_node_symbol(c, mangled_name));
22552256
2256 parameter_init_block->data.block.statements.append(parameter_init);2257 body_node_with_param_inits->data.block.statements.append(parameter_init);
2257 }2258 }
22582259
2259 parameter_init_block->data.block.statements.append(actual_body_node);2260 for (size_t i = 0; i < actual_body_node->data.block.statements.length; i += 1) {
2261 body_node_with_param_inits->data.block.statements.append(actual_body_node->data.block.statements.at(i));
2262 }
22602263
2261 AstNode *fn_def_node = trans_create_node(c, NodeTypeFnDef);2264 AstNode *fn_def_node = trans_create_node(c, NodeTypeFnDef);
2262 fn_def_node->data.fn_def.fn_proto = proto_node;2265 fn_def_node->data.fn_def.fn_proto = proto_node;
2263 fn_def_node->data.fn_def.body = parameter_init_block;2266 fn_def_node->data.fn_def.body = body_node_with_param_inits;
22642267
2265 proto_node->data.fn_proto.fn_def_node = fn_def_node;2268 proto_node->data.fn_proto.fn_def_node = fn_def_node;
2266 c->root->data.root.top_level_decls.append(fn_def_node);2269 c->root->data.root.top_level_decls.append(fn_def_node);