aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-07-18 17:04:28 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-07-18 17:58:39 -0700
commit70c71935c7c9f20353dc2a50b497b752d70d3452 (patch)
treeef64682878421fcc88751fec7220aa855edd231e /src/Module.zig
parent11695745e5c6cbd158625d2c1682a09e2ee4c679 (diff)
downloadzig-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.zig12
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)));