| ... | ... | @@ -204,15 +204,14 @@ static bool is_symbol_available(CodeGen *g, const char *name) { |
| 204 | 204 | Buf *buf_name = buf_create_from_str(name); |
| 205 | 205 | bool result = |
| 206 | 206 | g->exported_symbol_names.maybe_get(buf_name) == nullptr && |
| 207 | | g->external_prototypes.maybe_get(buf_name) == nullptr; |
| 207 | g->external_symbol_names.maybe_get(buf_name) == nullptr; |
| 208 | 208 | buf_destroy(buf_name); |
| 209 | 209 | return result; |
| 210 | 210 | } |
| 211 | 211 | |
| 212 | | static const char *get_mangled_name(CodeGen *g, const char *original_name, bool external_linkage) { |
| 213 | | if (external_linkage || is_symbol_available(g, original_name)) { |
| 212 | static const char *get_mangled_name(CodeGen *g, const char *original_name) { |
| 213 | if (is_symbol_available(g, original_name)) |
| 214 | 214 | return original_name; |
| 215 | | } |
| 216 | 215 | |
| 217 | 216 | int n = 0; |
| 218 | 217 | for (;; n += 1) { |
| ... | ... | @@ -437,7 +436,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) { |
| 437 | 436 | symbol_name = unmangled_name; |
| 438 | 437 | linkage = GlobalLinkageIdStrong; |
| 439 | 438 | } else if (fn->export_list.length == 0) { |
| 440 | | symbol_name = get_mangled_name(g, unmangled_name, false); |
| 439 | symbol_name = get_mangled_name(g, unmangled_name); |
| 441 | 440 | linkage = GlobalLinkageIdInternal; |
| 442 | 441 | } else { |
| 443 | 442 | GlobalExport *fn_export = &fn->export_list.items[0]; |
| ... | ... | @@ -1115,7 +1114,7 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) { |
| 1115 | 1114 | }; |
| 1116 | 1115 | LLVMTypeRef fn_type_ref = LLVMFunctionType(LLVMVoidType(), arg_types, 2, false); |
| 1117 | 1116 | |
| 1118 | | const char *fn_name = get_mangled_name(g, "__zig_add_err_ret_trace_addr", false); |
| 1117 | const char *fn_name = get_mangled_name(g, "__zig_add_err_ret_trace_addr"); |
| 1119 | 1118 | LLVMValueRef fn_val = LLVMAddFunction(g->module, fn_name, fn_type_ref); |
| 1120 | 1119 | addLLVMFnAttr(fn_val, "alwaysinline"); |
| 1121 | 1120 | LLVMSetLinkage(fn_val, LLVMInternalLinkage); |
| ... | ... | @@ -1194,7 +1193,7 @@ static LLVMValueRef get_return_err_fn(CodeGen *g) { |
| 1194 | 1193 | }; |
| 1195 | 1194 | LLVMTypeRef fn_type_ref = LLVMFunctionType(LLVMVoidType(), arg_types, 1, false); |
| 1196 | 1195 | |
| 1197 | | const char *fn_name = get_mangled_name(g, "__zig_return_error", false); |
| 1196 | const char *fn_name = get_mangled_name(g, "__zig_return_error"); |
| 1198 | 1197 | LLVMValueRef fn_val = LLVMAddFunction(g->module, fn_name, fn_type_ref); |
| 1199 | 1198 | addLLVMFnAttr(fn_val, "noinline"); // so that we can look at return address |
| 1200 | 1199 | addLLVMFnAttr(fn_val, "cold"); |
| ... | ... | @@ -1264,7 +1263,7 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) { |
| 1264 | 1263 | LLVMSetLinkage(msg_prefix, LLVMPrivateLinkage); |
| 1265 | 1264 | LLVMSetGlobalConstant(msg_prefix, true); |
| 1266 | 1265 | |
| 1267 | | const char *fn_name = get_mangled_name(g, "__zig_fail_unwrap", false); |
| 1266 | const char *fn_name = get_mangled_name(g, "__zig_fail_unwrap"); |
| 1268 | 1267 | LLVMTypeRef fn_type_ref; |
| 1269 | 1268 | if (g->have_err_ret_tracing) { |
| 1270 | 1269 | LLVMTypeRef arg_types[] = { |
| ... | ... | @@ -2174,7 +2173,7 @@ static LLVMValueRef get_merge_err_ret_traces_fn_val(CodeGen *g) { |
| 2174 | 2173 | }; |
| 2175 | 2174 | LLVMTypeRef fn_type_ref = LLVMFunctionType(LLVMVoidType(), param_types, 2, false); |
| 2176 | 2175 | |
| 2177 | | const char *fn_name = get_mangled_name(g, "__zig_merge_error_return_traces", false); |
| 2176 | const char *fn_name = get_mangled_name(g, "__zig_merge_error_return_traces"); |
| 2178 | 2177 | LLVMValueRef fn_val = LLVMAddFunction(g->module, fn_name, fn_type_ref); |
| 2179 | 2178 | LLVMSetLinkage(fn_val, LLVMInternalLinkage); |
| 2180 | 2179 | ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified)); |
| ... | ... | @@ -5099,7 +5098,7 @@ static LLVMValueRef get_enum_tag_name_function(CodeGen *g, ZigType *enum_type) { |
| 5099 | 5098 | &tag_int_llvm_type, 1, false); |
| 5100 | 5099 | |
| 5101 | 5100 | const char *fn_name = get_mangled_name(g, |
| 5102 | | buf_ptr(buf_sprintf("__zig_tag_name_%s", buf_ptr(&enum_type->name))), false); |
| 5101 | buf_ptr(buf_sprintf("__zig_tag_name_%s", buf_ptr(&enum_type->name)))); |
| 5103 | 5102 | LLVMValueRef fn_val = LLVMAddFunction(g->module, fn_name, fn_type_ref); |
| 5104 | 5103 | LLVMSetLinkage(fn_val, LLVMInternalLinkage); |
| 5105 | 5104 | ZigLLVMFunctionSetCallingConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified)); |
| ... | ... | @@ -7588,7 +7587,7 @@ static void generate_error_name_table(CodeGen *g) { |
| 7588 | 7587 | LLVMValueRef err_name_table_init = LLVMConstArray(get_llvm_type(g, str_type), values, (unsigned)g->errors_by_index.length); |
| 7589 | 7588 | |
| 7590 | 7589 | g->err_name_table = LLVMAddGlobal(g->module, LLVMTypeOf(err_name_table_init), |
| 7591 | | get_mangled_name(g, buf_ptr(buf_create_from_str("__zig_err_name_table")), false)); |
| 7590 | get_mangled_name(g, buf_ptr(buf_create_from_str("__zig_err_name_table")))); |
| 7592 | 7591 | LLVMSetInitializer(g->err_name_table, err_name_table_init); |
| 7593 | 7592 | LLVMSetLinkage(g->err_name_table, LLVMPrivateLinkage); |
| 7594 | 7593 | LLVMSetGlobalConstant(g->err_name_table, true); |
| ... | ... | @@ -7719,7 +7718,7 @@ static void do_code_gen(CodeGen *g) { |
| 7719 | 7718 | symbol_name = unmangled_name; |
| 7720 | 7719 | linkage = GlobalLinkageIdStrong; |
| 7721 | 7720 | } else { |
| 7722 | | symbol_name = get_mangled_name(g, unmangled_name, false); |
| 7721 | symbol_name = get_mangled_name(g, unmangled_name); |
| 7723 | 7722 | linkage = GlobalLinkageIdInternal; |
| 7724 | 7723 | } |
| 7725 | 7724 | } else { |
| ... | ... | @@ -10954,7 +10953,7 @@ CodeGen *codegen_create(Buf *main_pkg_path, Buf *root_src_path, const ZigTarget |
| 10954 | 10953 | g->llvm_fn_table.init(16); |
| 10955 | 10954 | g->memoized_fn_eval_table.init(16); |
| 10956 | 10955 | g->exported_symbol_names.init(8); |
| 10957 | | g->external_prototypes.init(8); |
| 10956 | g->external_symbol_names.init(8); |
| 10958 | 10957 | g->string_literals_table.init(16); |
| 10959 | 10958 | g->type_info_cache.init(32); |
| 10960 | 10959 | g->one_possible_values.init(32); |
| ... | ... | @@ -10964,7 +10963,7 @@ CodeGen *codegen_create(Buf *main_pkg_path, Buf *root_src_path, const ZigTarget |
| 10964 | 10963 | buf_resize(&g->global_asm, 0); |
| 10965 | 10964 | |
| 10966 | 10965 | for (size_t i = 0; i < array_length(symbols_that_llvm_depends_on); i += 1) { |
| 10967 | | g->external_prototypes.put(buf_create_from_str(symbols_that_llvm_depends_on[i]), nullptr); |
| 10966 | g->external_symbol_names.put(buf_create_from_str(symbols_that_llvm_depends_on[i]), nullptr); |
| 10968 | 10967 | } |
| 10969 | 10968 | |
| 10970 | 10969 | if (root_src_path) { |