aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2017-12-09 18:11:36 +0000
committergingerBill <bill@gingerbill.org>2017-12-09 18:11:36 +0000
commit3703ca4df47134e0c274cf5096d14c9323331ff0 (patch)
treea01aab633bf3d25aba33357cb8d181537e9c841b /src/ir.cpp
parent41b8281c7355eea7c4a2022027769df8a519ae7a (diff)
Explicit procedure group; Remove implicit procedure overloading
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index f1b6a5ee0..c869e550b 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -3620,7 +3620,7 @@ String ir_mangle_name(irGen *s, String path, Entity *e) {
isize base_len = ext-1-base;
isize max_len = base_len + 1 + 1 + 10 + 1 + name.len;
- bool require_suffix_id = check_is_entity_overloaded(e) || is_type_polymorphic(e->type);
+ bool require_suffix_id = is_type_polymorphic(e->type);
if (require_suffix_id) {
max_len += 21;
}
@@ -8304,19 +8304,22 @@ void ir_gen_tree(irGen *s) {
}
for_array(i, info->entities.entries) {
- auto *entry = &info->entities.entries[i];
- Entity *e = cast(Entity *)entry->key.ptr;
- String name = e->token.string;
- DeclInfo *decl = entry->value;
- Scope *scope = e->scope;
+ auto * entry = &info->entities.entries[i];
+ Entity * e = cast(Entity *)entry->key.ptr;
+ String name = e->token.string;
+ DeclInfo *decl = entry->value;
+ Scope * scope = e->scope;
if (!scope->is_file) {
continue;
}
- if (e->kind == Entity_Variable || e->kind == Entity_ProcedureGrouping) {
+ switch (e->kind) {
+ case Entity_Variable:
// NOTE(bill): Handled above as it requires a specific load order
continue;
+ case Entity_ProcGroup:
+ continue;
}
bool polymorphic_struct = false;
@@ -8341,8 +8344,6 @@ void ir_gen_tree(irGen *s) {
} else {
name = ir_mangle_name(s, e->token.pos.file, e);
}
- } else if (check_is_entity_overloaded(e)) {
- name = ir_mangle_name(s, e->token.pos.file, e);
}
ir_add_entity_name(m, e, name);
@@ -8373,7 +8374,7 @@ void ir_gen_tree(irGen *s) {
ir_module_add_value(m, e, p);
HashKey hash_name = hash_string(name);
if (map_get(&m->members, hash_name) == nullptr) {
- multi_map_insert(&m->members, hash_name, p);
+ map_set(&m->members, hash_name, p);
}
break;
}