mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 15:18:49 +00:00
Generalize name mangling rule to have a singular definition for a name separator
This commit is contained in:
@@ -346,6 +346,8 @@ struct lbProcedure {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define ABI_PKG_NAME_SEPARATOR "."
|
||||||
|
|
||||||
|
|
||||||
#if !ODIN_LLVM_MINIMUM_VERSION_14
|
#if !ODIN_LLVM_MINIMUM_VERSION_14
|
||||||
#define LLVMConstGEP2(Ty__, ConstantVal__, ConstantIndices__, NumIndices__) LLVMConstGEP(ConstantVal__, ConstantIndices__, NumIndices__)
|
#define LLVMConstGEP2(Ty__, ConstantVal__, ConstantIndices__, NumIndices__) LLVMConstGEP(ConstantVal__, ConstantIndices__, NumIndices__)
|
||||||
|
|||||||
@@ -1403,7 +1403,7 @@ gb_internal String lb_mangle_name(lbModule *m, Entity *e) {
|
|||||||
char *new_name = gb_alloc_array(permanent_allocator(), char, max_len);
|
char *new_name = gb_alloc_array(permanent_allocator(), char, max_len);
|
||||||
isize new_name_len = gb_snprintf(
|
isize new_name_len = gb_snprintf(
|
||||||
new_name, max_len,
|
new_name, max_len,
|
||||||
"%.*s.%.*s", LIT(pkgn), LIT(name)
|
"%.*s" ABI_PKG_NAME_SEPARATOR "%.*s", LIT(pkgn), LIT(name)
|
||||||
);
|
);
|
||||||
if (require_suffix_id) {
|
if (require_suffix_id) {
|
||||||
char *str = new_name + new_name_len-1;
|
char *str = new_name + new_name_len-1;
|
||||||
@@ -1453,7 +1453,7 @@ gb_internal String lb_set_nested_type_name_ir_mangled_name(Entity *e, lbProcedur
|
|||||||
isize name_len = p->name.len + 1 + ts_name.len + 1 + 10 + 1;
|
isize name_len = p->name.len + 1 + ts_name.len + 1 + 10 + 1;
|
||||||
char *name_text = gb_alloc_array(permanent_allocator(), char, name_len);
|
char *name_text = gb_alloc_array(permanent_allocator(), char, name_len);
|
||||||
u32 guid = 1+p->module->nested_type_name_guid.fetch_add(1);
|
u32 guid = 1+p->module->nested_type_name_guid.fetch_add(1);
|
||||||
name_len = gb_snprintf(name_text, name_len, "%.*s.%.*s-%u", LIT(p->name), LIT(ts_name), guid);
|
name_len = gb_snprintf(name_text, name_len, "%.*s" ABI_PKG_NAME_SEPARATOR "%.*s-%u", LIT(p->name), LIT(ts_name), guid);
|
||||||
|
|
||||||
String name = make_string(cast(u8 *)name_text, name_len-1);
|
String name = make_string(cast(u8 *)name_text, name_len-1);
|
||||||
e->TypeName.ir_mangled_name = name;
|
e->TypeName.ir_mangled_name = name;
|
||||||
@@ -1463,7 +1463,7 @@ gb_internal String lb_set_nested_type_name_ir_mangled_name(Entity *e, lbProcedur
|
|||||||
isize name_len = 9 + 1 + ts_name.len + 1 + 10 + 1;
|
isize name_len = 9 + 1 + ts_name.len + 1 + 10 + 1;
|
||||||
char *name_text = gb_alloc_array(permanent_allocator(), char, name_len);
|
char *name_text = gb_alloc_array(permanent_allocator(), char, name_len);
|
||||||
static std::atomic<u32> guid;
|
static std::atomic<u32> guid;
|
||||||
name_len = gb_snprintf(name_text, name_len, "_internal.%.*s-%u", LIT(ts_name), 1+guid.fetch_add(1));
|
name_len = gb_snprintf(name_text, name_len, "_internal" ABI_PKG_NAME_SEPARATOR "%.*s-%u", LIT(ts_name), 1+guid.fetch_add(1));
|
||||||
|
|
||||||
String name = make_string(cast(u8 *)name_text, name_len-1);
|
String name = make_string(cast(u8 *)name_text, name_len-1);
|
||||||
e->TypeName.ir_mangled_name = name;
|
e->TypeName.ir_mangled_name = name;
|
||||||
|
|||||||
@@ -757,7 +757,7 @@ gb_internal void lb_build_nested_proc(lbProcedure *p, AstProcLit *pd, Entity *e)
|
|||||||
char *name_text = gb_alloc_array(permanent_allocator(), char, name_len);
|
char *name_text = gb_alloc_array(permanent_allocator(), char, name_len);
|
||||||
|
|
||||||
i32 guid = cast(i32)p->children.count;
|
i32 guid = cast(i32)p->children.count;
|
||||||
name_len = gb_snprintf(name_text, name_len, "%.*s.%.*s-%d", LIT(p->name), LIT(pd_name), guid);
|
name_len = gb_snprintf(name_text, name_len, "%.*s" ABI_PKG_NAME_SEPARATOR "%.*s-%d", LIT(p->name), LIT(pd_name), guid);
|
||||||
String name = make_string(cast(u8 *)name_text, name_len-1);
|
String name = make_string(cast(u8 *)name_text, name_len-1);
|
||||||
|
|
||||||
e->Procedure.link_name = name;
|
e->Procedure.link_name = name;
|
||||||
|
|||||||
Reference in New Issue
Block a user