From 0f48a7d299a80c2e461bdcf5b37b5f624a48d7e8 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 14 Aug 2016 22:19:39 +0100 Subject: #foreign "custom_name"; bugs (see test.ll and test2.ll) --- src/codegen/codegen.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/codegen/codegen.cpp') diff --git a/src/codegen/codegen.cpp b/src/codegen/codegen.cpp index 4cb4a98be..0c36ca8f3 100644 --- a/src/codegen/codegen.cpp +++ b/src/codegen/codegen.cpp @@ -18,6 +18,11 @@ b32 ssa_gen_init(ssaGen *s, Checker *c) { return false; } + isize tc = c->parser->total_token_count; + if (tc < 2) { + return false; + } + ssa_module_init(&s->module, c); // TODO(bill): generate appropriate output name @@ -79,8 +84,13 @@ void ssa_gen_code(ssaGen *s) { } break; case Entity_Procedure: { - AstNode *body = decl->proc_decl->ProcDecl.body; - ssaValue *p = ssa_make_value_procedure(a, m, e->type, decl->type_expr, body, e->token.string); + auto *pd = &decl->proc_decl->ProcDecl; + String name = e->token.string; + AstNode *body = pd->body; + if (pd->foreign_name.len > 0) { + name = pd->foreign_name; + } + ssaValue *p = ssa_make_value_procedure(a, m, e->type, decl->type_expr, body, name); map_set(&m->values, hash_pointer(e), p); map_set(&m->members, hash_string(name), p); } break; -- cgit v1.2.3