diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-07-18 17:04:28 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-07-18 17:58:39 -0700 |
| commit | 70c71935c7c9f20353dc2a50b497b752d70d3452 (patch) | |
| tree | ef64682878421fcc88751fec7220aa855edd231e /src/Module.zig | |
| parent | 11695745e5c6cbd158625d2c1682a09e2ee4c679 (diff) | |
| download | zig-70c71935c7c9f20353dc2a50b497b752d70d3452.tar.gz zig-70c71935c7c9f20353dc2a50b497b752d70d3452.zip | |
cbe: fix pointers to aliases of extern values
Diffstat (limited to 'src/Module.zig')
| -rw-r--r-- | src/Module.zig | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Module.zig b/src/Module.zig index e1db07ab72..96be13e768 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -888,15 +888,19 @@ pub const Decl = struct { assert(decl.dependencies.swapRemove(other)); } - pub fn isExtern(decl: Decl, mod: *Module) bool { + pub fn getExternDecl(decl: Decl, mod: *Module) OptionalIndex { assert(decl.has_tv); return switch (mod.intern_pool.indexToKey(decl.val.toIntern())) { - .variable => |variable| variable.is_extern, - .extern_func => true, - else => false, + .variable => |variable| if (variable.is_extern) variable.decl.toOptional() else .none, + .extern_func => |extern_func| extern_func.decl.toOptional(), + else => .none, }; } + pub fn isExtern(decl: Decl, mod: *Module) bool { + return decl.getExternDecl(mod) != .none; + } + pub fn getAlignment(decl: Decl, mod: *Module) u32 { assert(decl.has_tv); return @as(u32, @intCast(decl.alignment.toByteUnitsOptional() orelse decl.ty.abiAlignment(mod))); |
