aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-05-08 16:52:59 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-06-10 20:42:30 -0700
commit275652f620541919087bc92da0d2f9e97c66d3c0 (patch)
tree0b19398252ef29e6b0a6c6758ac90f564a235f13 /src/arch
parente94a81c951905a6b5bcf2a6028589ac1e33d1edd (diff)
downloadzig-275652f620541919087bc92da0d2f9e97c66d3c0.tar.gz
zig-275652f620541919087bc92da0d2f9e97c66d3c0.zip
stage2: move opaque types to InternPool
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/wasm/CodeGen.zig5
-rw-r--r--src/arch/wasm/Emit.zig2
-rw-r--r--src/arch/x86_64/CodeGen.zig15
3 files changed, 13 insertions, 9 deletions
diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig
index 237a55984e..b484e21424 100644
--- a/src/arch/wasm/CodeGen.zig
+++ b/src/arch/wasm/CodeGen.zig
@@ -764,8 +764,9 @@ pub fn deinit(func: *CodeGen) void {
/// Sets `err_msg` on `CodeGen` and returns `error.CodegenFail` which is caught in link/Wasm.zig
fn fail(func: *CodeGen, comptime fmt: []const u8, args: anytype) InnerError {
+ const mod = func.bin_file.base.options.module.?;
const src = LazySrcLoc.nodeOffset(0);
- const src_loc = src.toSrcLoc(func.decl);
+ const src_loc = src.toSrcLoc(func.decl, mod);
func.err_msg = try Module.ErrorMsg.create(func.gpa, src_loc, fmt, args);
return error.CodegenFail;
}
@@ -6799,7 +6800,7 @@ fn airTagName(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
fn getTagNameFunction(func: *CodeGen, enum_ty: Type) InnerError!u32 {
const mod = func.bin_file.base.options.module.?;
- const enum_decl_index = enum_ty.getOwnerDecl();
+ const enum_decl_index = enum_ty.getOwnerDecl(mod);
var arena_allocator = std.heap.ArenaAllocator.init(func.gpa);
defer arena_allocator.deinit();
diff --git a/src/arch/wasm/Emit.zig b/src/arch/wasm/Emit.zig
index bfa5324dc6..45ad1d7eb3 100644
--- a/src/arch/wasm/Emit.zig
+++ b/src/arch/wasm/Emit.zig
@@ -254,7 +254,7 @@ fn fail(emit: *Emit, comptime format: []const u8, args: anytype) InnerError {
@setCold(true);
std.debug.assert(emit.error_msg == null);
const mod = emit.bin_file.base.options.module.?;
- emit.error_msg = try Module.ErrorMsg.create(emit.bin_file.base.allocator, mod.declPtr(emit.decl_index).srcLoc(), format, args);
+ emit.error_msg = try Module.ErrorMsg.create(emit.bin_file.base.allocator, mod.declPtr(emit.decl_index).srcLoc(mod), format, args);
return error.EmitFail;
}
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig
index 1cfed06ff1..4fb5267cb0 100644
--- a/src/arch/x86_64/CodeGen.zig
+++ b/src/arch/x86_64/CodeGen.zig
@@ -112,10 +112,10 @@ const Owner = union(enum) {
mod_fn: *const Module.Fn,
lazy_sym: link.File.LazySymbol,
- fn getDecl(owner: Owner) Module.Decl.Index {
+ fn getDecl(owner: Owner, mod: *Module) Module.Decl.Index {
return switch (owner) {
.mod_fn => |mod_fn| mod_fn.owner_decl,
- .lazy_sym => |lazy_sym| lazy_sym.ty.getOwnerDecl(),
+ .lazy_sym => |lazy_sym| lazy_sym.ty.getOwnerDecl(mod),
};
}
@@ -7926,6 +7926,7 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {
}
fn genArgDbgInfo(self: Self, ty: Type, name: [:0]const u8, mcv: MCValue) !void {
+ const mod = self.bin_file.options.module.?;
switch (self.debug_output) {
.dwarf => |dw| {
const loc: link.File.Dwarf.DeclState.DbgInfoLoc = switch (mcv) {
@@ -7944,7 +7945,7 @@ fn genArgDbgInfo(self: Self, ty: Type, name: [:0]const u8, mcv: MCValue) !void {
// TODO: this might need adjusting like the linkers do.
// Instead of flattening the owner and passing Decl.Index here we may
// want to special case LazySymbol in DWARF linker too.
- try dw.genArgDbgInfo(name, ty, self.owner.getDecl(), loc);
+ try dw.genArgDbgInfo(name, ty, self.owner.getDecl(mod), loc);
},
.plan9 => {},
.none => {},
@@ -7958,6 +7959,7 @@ fn genVarDbgInfo(
mcv: MCValue,
name: [:0]const u8,
) !void {
+ const mod = self.bin_file.options.module.?;
const is_ptr = switch (tag) {
.dbg_var_ptr => true,
.dbg_var_val => false,
@@ -7988,7 +7990,7 @@ fn genVarDbgInfo(
// TODO: this might need adjusting like the linkers do.
// Instead of flattening the owner and passing Decl.Index here we may
// want to special case LazySymbol in DWARF linker too.
- try dw.genVarDbgInfo(name, ty, self.owner.getDecl(), is_ptr, loc);
+ try dw.genVarDbgInfo(name, ty, self.owner.getDecl(mod), is_ptr, loc);
},
.plan9 => {},
.none => {},
@@ -10936,7 +10938,7 @@ fn airTagName(self: *Self, inst: Air.Inst.Index) !void {
try self.genLazySymbolRef(
.call,
.rax,
- link.File.LazySymbol.initDecl(.code, enum_ty.getOwnerDecl(), mod),
+ link.File.LazySymbol.initDecl(.code, enum_ty.getOwnerDecl(mod), mod),
);
return self.finishAir(inst, dst_mcv, .{ un_op, .none, .none });
@@ -11651,7 +11653,8 @@ fn limitImmediateType(self: *Self, operand: Air.Inst.Ref, comptime T: type) !MCV
}
fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {
- return switch (try codegen.genTypedValue(self.bin_file, self.src_loc, arg_tv, self.owner.getDecl())) {
+ const mod = self.bin_file.options.module.?;
+ return switch (try codegen.genTypedValue(self.bin_file, self.src_loc, arg_tv, self.owner.getDecl(mod))) {
.mcv => |mcv| switch (mcv) {
.none => .none,
.undef => .undef,