From 556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sat, 5 Feb 2022 17:41:03 +0100 Subject: stage2: add new Decl subtype, ExternFn `ExternFn` will contain a maybe-lib-name if it was defined with the `extern` keyword like so ```zig extern "c" fn write(usize, usize, usize) usize; ``` `lib_name` will live as long as `ExternFn` decl does. --- src/codegen/c.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/codegen/c.zig') 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, -- cgit v1.2.3