diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-02-07 13:30:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-07 13:30:59 -0500 |
| commit | 9acf06d28ac77a52028697dc01f42fd96c230ca9 (patch) | |
| tree | 6c90921e6437293e84f137adce8364550f43ebb4 /src/codegen | |
| parent | 3db130ff3d8175adce610f7805a149810cf7989d (diff) | |
| parent | db9500a31401c65327a4fd556f50d74ce75fb858 (diff) | |
| download | zig-9acf06d28ac77a52028697dc01f42fd96c230ca9.tar.gz zig-9acf06d28ac77a52028697dc01f42fd96c230ca9.zip | |
Merge pull request #10803 from ziglang/decl-has-lib-name
stage2: store externs lib name as part of decl
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/c.zig | 8 | ||||
| -rw-r--r-- | src/codegen/llvm.zig | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index 299581cd48..44b904f031 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -542,8 +542,8 @@ pub const DeclGen = struct { try dg.renderDeclName(func.owner_decl, writer); }, .extern_fn => { - const decl = val.castTag(.extern_fn).?.data; - try dg.renderDeclName(decl, writer); + const extern_fn = val.castTag(.extern_fn).?.data; + try dg.renderDeclName(extern_fn.owner_decl, writer); }, .int_u64, .one => { try writer.writeAll("(("); @@ -681,7 +681,7 @@ pub const DeclGen = struct { return dg.renderDeclValue(writer, ty, val, decl); }, .extern_fn => { - const decl = val.castTag(.extern_fn).?.data; + const decl = val.castTag(.extern_fn).?.data.owner_decl; return dg.renderDeclValue(writer, ty, val, decl); }, else => unreachable, @@ -2442,7 +2442,7 @@ fn airCall(f: *Function, inst: Air.Inst.Index) !CValue { const fn_decl = fn_decl: { const callee_val = f.air.value(pl_op.operand) orelse break :known; break :fn_decl switch (callee_val.tag()) { - .extern_fn => callee_val.castTag(.extern_fn).?.data, + .extern_fn => callee_val.castTag(.extern_fn).?.data.owner_decl, .function => callee_val.castTag(.function).?.data.owner_decl, .decl_ref => callee_val.castTag(.decl_ref).?.data, else => break :known, diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 08fc3879a9..abf371c85b 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -622,7 +622,7 @@ pub const DeclGen = struct { _ = func_payload; @panic("TODO llvm backend genDecl function pointer"); } else if (decl.val.castTag(.extern_fn)) |extern_fn| { - _ = try dg.resolveLlvmFunction(extern_fn.data); + _ = try dg.resolveLlvmFunction(extern_fn.data.owner_decl); } else { const target = dg.module.getTarget(); const global = try dg.resolveGlobalDecl(decl); @@ -1410,7 +1410,7 @@ pub const DeclGen = struct { }, .Fn => { const fn_decl = switch (tv.val.tag()) { - .extern_fn => tv.val.castTag(.extern_fn).?.data, + .extern_fn => tv.val.castTag(.extern_fn).?.data.owner_decl, .function => tv.val.castTag(.function).?.data.owner_decl, else => unreachable, }; |
