diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-05 17:41:03 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-06 08:42:14 +0100 |
| commit | 556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba (patch) | |
| tree | e3ddbc2240c99a089906a10c4c40dcc83a883f17 /src/codegen/c.zig | |
| parent | 04f379dd414184a42412f4497b0573d7612d6730 (diff) | |
| download | zig-556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba.tar.gz zig-556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba.zip | |
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.
Diffstat (limited to 'src/codegen/c.zig')
| -rw-r--r-- | src/codegen/c.zig | 8 |
1 files changed, 4 insertions, 4 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, |
