Skip to content

Commit

Permalink
Use more predictable object name
Browse files Browse the repository at this point in the history
  • Loading branch information
gingerBill committed Feb 25, 2025
1 parent 5aafbc7 commit fd6d7d4
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 28 deletions.
40 changes: 20 additions & 20 deletions src/llvm_backend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2559,17 +2559,15 @@ gb_internal String lb_filepath_ll_for_module(lbModule *m) {
build_context.build_paths[BuildPath_Output].name
);

if (m->file) {
char buf[32] = {};
isize n = gb_snprintf(buf, gb_size_of(buf), "-%u", m->file->id);
String suffix = make_string((u8 *)buf, n-1);
path = concatenate_strings(permanent_allocator(), path, suffix);
} else if (m->pkg) {
path = concatenate3_strings(permanent_allocator(), path, STR_LIT("-"), m->pkg->name);
} else if (USE_SEPARATE_MODULES) {
path = concatenate_strings(permanent_allocator(), path, STR_LIT("-builtin"));
}
path = concatenate_strings(permanent_allocator(), path, STR_LIT(".ll"));
GB_ASSERT(m->module_name != nullptr);
String s = make_string_c(m->module_name);
String prefix = str_lit("odin_package-");
GB_ASSERT(string_starts_with(s, prefix));
s.text += prefix.len;
s.len -= prefix.len;

path = concatenate_strings(permanent_allocator(), path, s);
path = concatenate_strings(permanent_allocator(), s, STR_LIT(".ll"));

return path;
}
Expand All @@ -2592,14 +2590,16 @@ gb_internal String lb_filepath_obj_for_module(lbModule *m) {
path = gb_string_appendc(path, "/");
path = gb_string_append_length(path, name.text, name.len);

if (m->file) {
char buf[32] = {};
isize n = gb_snprintf(buf, gb_size_of(buf), "-%u", m->file->id);
String suffix = make_string((u8 *)buf, n-1);
path = gb_string_append_length(path, suffix.text, suffix.len);
} else if (m->pkg) {
path = gb_string_appendc(path, "-");
path = gb_string_append_length(path, m->pkg->name.text, m->pkg->name.len);
{

GB_ASSERT(m->module_name != nullptr);
String s = make_string_c(m->module_name);
String prefix = str_lit("odin_package");
GB_ASSERT(string_starts_with(s, prefix));
s.text += prefix.len;
s.len -= prefix.len;

path = gb_string_append_length(path, s.text, s.len);
}

if (use_temporary_directory) {
Expand Down Expand Up @@ -3153,7 +3153,7 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
LLVMValueRef g = LLVMAddGlobal(m->mod, internal_llvm_type, LB_TYPE_INFO_DATA_NAME);
LLVMSetInitializer(g, LLVMConstNull(internal_llvm_type));
LLVMSetLinkage(g, USE_SEPARATE_MODULES ? LLVMExternalLinkage : LLVMInternalLinkage);
LLVMSetUnnamedAddress(g, LLVMGlobalUnnamedAddr);
// LLVMSetUnnamedAddress(g, LLVMGlobalUnnamedAddr);
LLVMSetGlobalConstant(g, true);

lbValue value = {};
Expand Down
15 changes: 9 additions & 6 deletions src/llvm_backend_general.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ gb_internal void lb_loop_end(lbProcedure *p, lbLoopData const &data) {

gb_internal void lb_make_global_private_const(LLVMValueRef global_data) {
LLVMSetLinkage(global_data, LLVMLinkerPrivateLinkage);
LLVMSetUnnamedAddress(global_data, LLVMGlobalUnnamedAddr);
// LLVMSetUnnamedAddress(global_data, LLVMGlobalUnnamedAddr);
LLVMSetGlobalConstant(global_data, true);
}
gb_internal void lb_make_global_private_const(lbAddr const &addr) {
Expand Down Expand Up @@ -2786,6 +2786,7 @@ gb_internal lbValue lb_generate_anonymous_proc_lit(lbModule *m, String const &pr


gb_internal lbAddr lb_add_global_generated_with_name(lbModule *m, Type *type, lbValue value, String name, Entity **entity_) {
GB_ASSERT(name.len != 0);
GB_ASSERT(type != nullptr);
type = default_type(type);

Expand Down Expand Up @@ -2817,12 +2818,14 @@ gb_internal lbAddr lb_add_global_generated_from_procedure(lbProcedure *p, Type *
GB_ASSERT(type != nullptr);
type = default_type(type);

u32 index = ++p->global_generated_index;
static std::atomic<u32> global_index;
u32 index = ++global_index;
// u32 index = ++p->global_generated_index;

gbString s = gb_string_make(temporary_allocator(), "ggv$");
s = gb_string_appendc(s, p->module->module_name);
s = gb_string_appendc(s, "$");
s = gb_string_append_length(s, p->name.text, p->name.len);
// s = gb_string_appendc(s, p->module->module_name);
// s = gb_string_appendc(s, "$");
// s = gb_string_append_length(s, p->name.text, p->name.len);
s = gb_string_append_fmt(s, "$%u", index);

String name = make_string(cast(u8 const *)s, gb_string_length(s));
Expand Down Expand Up @@ -2938,7 +2941,7 @@ gb_internal lbValue lb_generate_global_array(lbModule *m, Type *elem_type, i64 c
g.type = alloc_type_pointer(t);
LLVMSetInitializer(g.value, LLVMConstNull(lb_type(m, t)));
LLVMSetLinkage(g.value, LLVMPrivateLinkage);
LLVMSetUnnamedAddress(g.value, LLVMGlobalUnnamedAddr);
// LLVMSetUnnamedAddress(g.value, LLVMGlobalUnnamedAddr);
string_map_set(&m->members, s, g);
return g;
}
Expand Down
4 changes: 2 additions & 2 deletions src/llvm_backend_utility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2112,7 +2112,7 @@ gb_internal lbAddr lb_handle_objc_find_or_register_selector(lbProcedure *p, Stri
}

if (!entity) {
gbString global_name = gb_string_make(temporary_allocator(), "__$objc_selector-");
gbString global_name = gb_string_make(temporary_allocator(), "__$objc_SEL$");
global_name = gb_string_append_length(global_name, name.text, name.len);

lbAddr default_addr = lb_add_global_generated_with_name(
Expand Down Expand Up @@ -2175,7 +2175,7 @@ gb_internal lbAddr lb_handle_objc_find_or_register_class(lbProcedure *p, String
}

if (!entity) {
gbString global_name = gb_string_make(temporary_allocator(), "__$objc_class-");
gbString global_name = gb_string_make(temporary_allocator(), "__$objc_Class$");
global_name = gb_string_append_length(global_name, name.text, name.len);

lbAddr default_addr = lb_add_global_generated_with_name(default_module, t_objc_Class, {},
Expand Down

0 comments on commit fd6d7d4

Please sign in to comment.