aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/llvm.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2024-01-14 14:53:29 +0100
committerJakub Konka <kubkon@jakubkonka.com>2024-01-15 07:39:05 +0100
commit03ed3f56cf0df6864f8a61cfe2108a7f6692bfc6 (patch)
tree9b4cf66017cce932a1f37a6197b9d5e806c061b3 /src/codegen/llvm.zig
parent3dddb881bfefbcd64aae7775ed72c42e37503674 (diff)
downloadzig-03ed3f56cf0df6864f8a61cfe2108a7f6692bfc6.tar.gz
zig-03ed3f56cf0df6864f8a61cfe2108a7f6692bfc6.zip
Sema: fix `@extern` decls
Closes #18550
Diffstat (limited to 'src/codegen/llvm.zig')
-rw-r--r--src/codegen/llvm.zig7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 01da7ba9a2..8f2a27c514 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -2941,9 +2941,13 @@ pub const Object = struct {
const target = owner_mod.resolved_target.result;
const sret = firstParamSRet(fn_info, zcu);
+ const is_extern = decl.isExtern(zcu);
const function_index = try o.builder.addFunction(
try o.lowerType(zig_fn_type),
- try o.builder.string(ip.stringToSlice(try decl.getFullyQualifiedName(zcu))),
+ try o.builder.string(ip.stringToSlice(if (is_extern)
+ decl.name
+ else
+ try decl.getFullyQualifiedName(zcu))),
toLlvmAddressSpace(decl.@"addrspace", target),
);
gop.value_ptr.* = function_index.ptrConst(&o.builder).global;
@@ -2951,7 +2955,6 @@ pub const Object = struct {
var attributes: Builder.FunctionAttributes.Wip = .{};
defer attributes.deinit(&o.builder);
- const is_extern = decl.isExtern(zcu);
if (!is_extern) {
function_index.setLinkage(.internal, &o.builder);
function_index.setUnnamedAddr(.unnamed_addr, &o.builder);