diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2024-01-14 14:53:29 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-01-15 07:39:05 +0100 |
| commit | 03ed3f56cf0df6864f8a61cfe2108a7f6692bfc6 (patch) | |
| tree | 9b4cf66017cce932a1f37a6197b9d5e806c061b3 /src/codegen/llvm.zig | |
| parent | 3dddb881bfefbcd64aae7775ed72c42e37503674 (diff) | |
| download | zig-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.zig | 7 |
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); |
