authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-10-26 22:57:14+02:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-10-28 03:48:18-04:00
log9a1fbb27059ec59b2e6f61c713b9c3120125a3da
tree335bf20f63110daa54af9c0e552a548959c896d7
parenta6a10d9c2b096e1c5cb7bf29273d64e7285b5f94

x86_64: rename load/lea_memory to load/lea_symbol


6 files changed, 83 insertions(+), 83 deletions(-)

src/arch/aarch64/CodeGen.zig+1-1
...@@ -6176,7 +6176,7 @@ fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {...@@ -6176,7 +6176,7 @@ fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {
6176 .memory => |addr| .{ .memory = addr },6176 .memory => |addr| .{ .memory = addr },
6177 .load_got => |sym_index| .{ .linker_load = .{ .type = .got, .sym_index = sym_index } },6177 .load_got => |sym_index| .{ .linker_load = .{ .type = .got, .sym_index = sym_index } },
6178 .load_direct => |sym_index| .{ .linker_load = .{ .type = .direct, .sym_index = sym_index } },6178 .load_direct => |sym_index| .{ .linker_load = .{ .type = .direct, .sym_index = sym_index } },
6179 .load_memory, .lea_memory, .load_tlv => unreachable, // TODO6179 .load_symbol, .lea_symbol, .load_tlv => unreachable, // TODO
6180 },6180 },
6181 .fail => |msg| {6181 .fail => |msg| {
6182 self.err_msg = msg;6182 self.err_msg = msg;
src/arch/arm/CodeGen.zig+1-1
...@@ -6135,7 +6135,7 @@ fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {...@@ -6135,7 +6135,7 @@ fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {
6135 .mcv => |mcv| switch (mcv) {6135 .mcv => |mcv| switch (mcv) {
6136 .none => .none,6136 .none => .none,
6137 .undef => .undef,6137 .undef => .undef,
6138 .load_got, .load_memory, .lea_memory, .load_direct, .load_tlv => unreachable, // TODO6138 .load_got, .load_symbol, .lea_symbol, .load_direct, .load_tlv => unreachable, // TODO
6139 .immediate => |imm| .{ .immediate = @as(u32, @truncate(imm)) },6139 .immediate => |imm| .{ .immediate = @as(u32, @truncate(imm)) },
6140 .memory => |addr| .{ .memory = addr },6140 .memory => |addr| .{ .memory = addr },
6141 },6141 },
src/arch/riscv64/CodeGen.zig+1-1
...@@ -2591,7 +2591,7 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -2591,7 +2591,7 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
2591 .mcv => |mcv| switch (mcv) {2591 .mcv => |mcv| switch (mcv) {
2592 .none => .none,2592 .none => .none,
2593 .undef => .undef,2593 .undef => .undef,
2594 .load_got, .load_memory, .lea_memory, .load_direct, .load_tlv => unreachable, // TODO2594 .load_got, .load_symbol, .lea_symbol, .load_direct, .load_tlv => unreachable, // TODO
2595 .immediate => |imm| .{ .immediate = imm },2595 .immediate => |imm| .{ .immediate = imm },
2596 .memory => |addr| .{ .memory = addr },2596 .memory => |addr| .{ .memory = addr },
2597 },2597 },
src/arch/sparc64/CodeGen.zig+1-1
...@@ -4137,7 +4137,7 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -4137,7 +4137,7 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
4137 .mcv => |mcv| switch (mcv) {4137 .mcv => |mcv| switch (mcv) {
4138 .none => .none,4138 .none => .none,
4139 .undef => .undef,4139 .undef => .undef,
4140 .load_got, .load_memory, .lea_memory, .load_direct, .load_tlv => unreachable, // TODO4140 .load_got, .load_symbol, .lea_symbol, .load_direct, .load_tlv => unreachable, // TODO
4141 .immediate => |imm| .{ .immediate = imm },4141 .immediate => |imm| .{ .immediate = imm },
4142 .memory => |addr| .{ .memory = addr },4142 .memory => |addr| .{ .memory = addr },
4143 },4143 },
src/arch/x86_64/CodeGen.zig+74-74
...@@ -195,9 +195,9 @@ pub const MCValue = union(enum) {...@@ -195,9 +195,9 @@ pub const MCValue = union(enum) {
195 memory: u64,195 memory: u64,
196 /// The value is in memory at an address not-yet-allocated by the linker.196 /// The value is in memory at an address not-yet-allocated by the linker.
197 /// This traditionally corresponds to a relocation emitted in a relocatable object file.197 /// This traditionally corresponds to a relocation emitted in a relocatable object file.
198 load_memory: u32,198 load_symbol: u32,
199 /// The address of the memory location not-yet-allocated by the linker.199 /// The address of the memory location not-yet-allocated by the linker.
200 lea_memory: u32,200 lea_symbol: u32,
201 /// The value is in memory at a constant offset from the address in a register.201 /// The value is in memory at a constant offset from the address in a register.
202 indirect: RegisterOffset,202 indirect: RegisterOffset,
203 /// The value is in memory.203 /// The value is in memory.
...@@ -298,7 +298,7 @@ pub const MCValue = union(enum) {...@@ -298,7 +298,7 @@ pub const MCValue = union(enum) {
298 .register_pair,298 .register_pair,
299 .register_offset,299 .register_offset,
300 .register_overflow,300 .register_overflow,
301 .lea_memory,301 .lea_symbol,
302 .lea_direct,302 .lea_direct,
303 .lea_got,303 .lea_got,
304 .lea_tlv,304 .lea_tlv,
...@@ -315,7 +315,7 @@ pub const MCValue = union(enum) {...@@ -315,7 +315,7 @@ pub const MCValue = union(enum) {
315 .load_got => |sym_index| .{ .lea_got = sym_index },315 .load_got => |sym_index| .{ .lea_got = sym_index },
316 .load_tlv => |sym_index| .{ .lea_tlv = sym_index },316 .load_tlv => |sym_index| .{ .lea_tlv = sym_index },
317 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },317 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },
318 .load_memory => |sym_index| .{ .lea_memory = sym_index },318 .load_symbol => |sym_index| .{ .lea_symbol = sym_index },
319 };319 };
320 }320 }
321321
...@@ -334,7 +334,7 @@ pub const MCValue = union(enum) {...@@ -334,7 +334,7 @@ pub const MCValue = union(enum) {
334 .load_got,334 .load_got,
335 .load_tlv,335 .load_tlv,
336 .load_frame,336 .load_frame,
337 .load_memory,337 .load_symbol,
338 .reserved_frame,338 .reserved_frame,
339 .air_ref,339 .air_ref,
340 => unreachable, // not dereferenceable340 => unreachable, // not dereferenceable
...@@ -345,7 +345,7 @@ pub const MCValue = union(enum) {...@@ -345,7 +345,7 @@ pub const MCValue = union(enum) {
345 .lea_got => |sym_index| .{ .load_got = sym_index },345 .lea_got => |sym_index| .{ .load_got = sym_index },
346 .lea_tlv => |sym_index| .{ .load_tlv = sym_index },346 .lea_tlv => |sym_index| .{ .load_tlv = sym_index },
347 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },347 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },
348 .lea_memory => |sym_index| .{ .load_memory = sym_index },348 .lea_symbol => |sym_index| .{ .load_symbol = sym_index },
349 };349 };
350 }350 }
351351
...@@ -370,8 +370,8 @@ pub const MCValue = union(enum) {...@@ -370,8 +370,8 @@ pub const MCValue = union(enum) {
370 .load_tlv,370 .load_tlv,
371 .lea_tlv,371 .lea_tlv,
372 .load_frame,372 .load_frame,
373 .load_memory,373 .load_symbol,
374 .lea_memory,374 .lea_symbol,
375 => switch (off) {375 => switch (off) {
376 0 => mcv,376 0 => mcv,
377 else => unreachable, // not offsettable377 else => unreachable, // not offsettable
...@@ -408,8 +408,8 @@ pub const MCValue = union(enum) {...@@ -408,8 +408,8 @@ pub const MCValue = union(enum) {
408 .lea_frame,408 .lea_frame,
409 .reserved_frame,409 .reserved_frame,
410 .air_ref,410 .air_ref,
411 .load_memory,411 .load_symbol,
412 .lea_memory,412 .lea_symbol,
413 => unreachable,413 => unreachable,
414 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|414 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
415 Memory.sib(ptr_size, .{ .base = .{ .reg = .ds }, .disp = small_addr })415 Memory.sib(ptr_size, .{ .base = .{ .reg = .ds }, .disp = small_addr })
...@@ -453,8 +453,8 @@ pub const MCValue = union(enum) {...@@ -453,8 +453,8 @@ pub const MCValue = union(enum) {
453 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),453 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
454 .reserved_frame => |pl| try writer.print("(dead:{})", .{pl}),454 .reserved_frame => |pl| try writer.print("(dead:{})", .{pl}),
455 .air_ref => |pl| try writer.print("(air:0x{x})", .{@intFromEnum(pl)}),455 .air_ref => |pl| try writer.print("(air:0x{x})", .{@intFromEnum(pl)}),
456 .load_memory => |pl| try writer.print("[mem:{d}]", .{pl}),456 .load_symbol => |pl| try writer.print("[mem:{d}]", .{pl}),
457 .lea_memory => |pl| try writer.print("mem:{d}", .{pl}),457 .lea_symbol => |pl| try writer.print("mem:{d}", .{pl}),
458 }458 }
459 }459 }
460};460};
...@@ -480,8 +480,8 @@ const InstTracking = struct {...@@ -480,8 +480,8 @@ const InstTracking = struct {
480 .lea_tlv,480 .lea_tlv,
481 .load_frame,481 .load_frame,
482 .lea_frame,482 .lea_frame,
483 .load_memory,483 .load_symbol,
484 .lea_memory,484 .lea_symbol,
485 => result,485 => result,
486 .dead,486 .dead,
487 .reserved_frame,487 .reserved_frame,
...@@ -541,8 +541,8 @@ const InstTracking = struct {...@@ -541,8 +541,8 @@ const InstTracking = struct {
541 .lea_tlv,541 .lea_tlv,
542 .load_frame,542 .load_frame,
543 .lea_frame,543 .lea_frame,
544 .load_memory,544 .load_symbol,
545 .lea_memory,545 .lea_symbol,
546 => self.long,546 => self.long,
547 .dead,547 .dead,
548 .eflags,548 .eflags,
...@@ -577,8 +577,8 @@ const InstTracking = struct {...@@ -577,8 +577,8 @@ const InstTracking = struct {
577 .load_tlv,577 .load_tlv,
578 .lea_tlv,578 .lea_tlv,
579 .lea_frame,579 .lea_frame,
580 .load_memory,580 .load_symbol,
581 .lea_memory,581 .lea_symbol,
582 => assert(std.meta.eql(self.long, target.long)),582 => assert(std.meta.eql(self.long, target.long)),
583 .load_frame,583 .load_frame,
584 .reserved_frame,584 .reserved_frame,
...@@ -4731,12 +4731,12 @@ fn airArrayElemVal(self: *Self, inst: Air.Inst.Index) !void {...@@ -4731,12 +4731,12 @@ fn airArrayElemVal(self: *Self, inst: Air.Inst.Index) !void {
4731 Memory.sib(.qword, .{ .base = .{ .frame = frame_addr.index }, .disp = frame_addr.off }),4731 Memory.sib(.qword, .{ .base = .{ .frame = frame_addr.index }, .disp = frame_addr.off }),
4732 ),4732 ),
4733 .memory,4733 .memory,
4734 .load_memory,4734 .load_symbol,
4735 .load_direct,4735 .load_direct,
4736 .load_got,4736 .load_got,
4737 .load_tlv,4737 .load_tlv,
4738 => try self.genSetReg(addr_reg, Type.usize, array.address()),4738 => try self.genSetReg(addr_reg, Type.usize, array.address()),
4739 .lea_memory, .lea_direct, .lea_tlv => unreachable,4739 .lea_symbol, .lea_direct, .lea_tlv => unreachable,
4740 else => return self.fail("TODO implement array_elem_val when array is {}", .{array}),4740 else => return self.fail("TODO implement array_elem_val when array is {}", .{array}),
4741 }4741 }
47424742
...@@ -6329,7 +6329,7 @@ fn load(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerErro...@@ -6329,7 +6329,7 @@ fn load(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerErro
6329 .immediate,6329 .immediate,
6330 .register,6330 .register,
6331 .register_offset,6331 .register_offset,
6332 .lea_memory,6332 .lea_symbol,
6333 .lea_direct,6333 .lea_direct,
6334 .lea_got,6334 .lea_got,
6335 .lea_tlv,6335 .lea_tlv,
...@@ -6337,7 +6337,7 @@ fn load(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerErro...@@ -6337,7 +6337,7 @@ fn load(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerErro
6337 => try self.genCopy(dst_ty, dst_mcv, ptr_mcv.deref()),6337 => try self.genCopy(dst_ty, dst_mcv, ptr_mcv.deref()),
6338 .memory,6338 .memory,
6339 .indirect,6339 .indirect,
6340 .load_memory,6340 .load_symbol,
6341 .load_direct,6341 .load_direct,
6342 .load_got,6342 .load_got,
6343 .load_tlv,6343 .load_tlv,
...@@ -6478,7 +6478,7 @@ fn store(self: *Self, ptr_ty: Type, ptr_mcv: MCValue, src_mcv: MCValue) InnerErr...@@ -6478,7 +6478,7 @@ fn store(self: *Self, ptr_ty: Type, ptr_mcv: MCValue, src_mcv: MCValue) InnerErr
6478 .immediate,6478 .immediate,
6479 .register,6479 .register,
6480 .register_offset,6480 .register_offset,
6481 .lea_memory,6481 .lea_symbol,
6482 .lea_direct,6482 .lea_direct,
6483 .lea_got,6483 .lea_got,
6484 .lea_tlv,6484 .lea_tlv,
...@@ -6486,7 +6486,7 @@ fn store(self: *Self, ptr_ty: Type, ptr_mcv: MCValue, src_mcv: MCValue) InnerErr...@@ -6486,7 +6486,7 @@ fn store(self: *Self, ptr_ty: Type, ptr_mcv: MCValue, src_mcv: MCValue) InnerErr
6486 => try self.genCopy(src_ty, ptr_mcv.deref(), src_mcv),6486 => try self.genCopy(src_ty, ptr_mcv.deref(), src_mcv),
6487 .memory,6487 .memory,
6488 .indirect,6488 .indirect,
6489 .load_memory,6489 .load_symbol,
6490 .load_direct,6490 .load_direct,
6491 .load_got,6491 .load_got,
6492 .load_tlv,6492 .load_tlv,
...@@ -6919,11 +6919,11 @@ fn genUnOpMir(self: *Self, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv: MC...@@ -6919,11 +6919,11 @@ fn genUnOpMir(self: *Self, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv: MC
6919 .lea_frame,6919 .lea_frame,
6920 .reserved_frame,6920 .reserved_frame,
6921 .air_ref,6921 .air_ref,
6922 .lea_memory,6922 .lea_symbol,
6923 => unreachable, // unmodifiable destination6923 => unreachable, // unmodifiable destination
6924 .register => |dst_reg| try self.asmRegister(mir_tag, registerAlias(dst_reg, abi_size)),6924 .register => |dst_reg| try self.asmRegister(mir_tag, registerAlias(dst_reg, abi_size)),
6925 .register_pair => unreachable, // unimplemented6925 .register_pair => unreachable, // unimplemented
6926 .memory, .load_memory, .load_got, .load_direct, .load_tlv => {6926 .memory, .load_symbol, .load_got, .load_direct, .load_tlv => {
6927 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);6927 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
6928 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);6928 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
6929 defer self.register_manager.unlockReg(addr_reg_lock);6929 defer self.register_manager.unlockReg(addr_reg_lock);
...@@ -7975,8 +7975,8 @@ fn genBinOp(...@@ -7975,8 +7975,8 @@ fn genBinOp(
7975 .immediate,7975 .immediate,
7976 .eflags,7976 .eflags,
7977 .register_offset,7977 .register_offset,
7978 .load_memory,7978 .load_symbol,
7979 .lea_memory,7979 .lea_symbol,
7980 .load_direct,7980 .load_direct,
7981 .lea_direct,7981 .lea_direct,
7982 .load_got,7982 .load_got,
...@@ -8033,8 +8033,8 @@ fn genBinOp(...@@ -8033,8 +8033,8 @@ fn genBinOp(
8033 .register_pair,8033 .register_pair,
8034 .register_offset,8034 .register_offset,
8035 .register_overflow,8035 .register_overflow,
8036 .load_memory,8036 .load_symbol,
8037 .lea_memory,8037 .lea_symbol,
8038 .load_direct,8038 .load_direct,
8039 .lea_direct,8039 .lea_direct,
8040 .load_got,8040 .load_got,
...@@ -9168,7 +9168,7 @@ fn genBinOpMir(...@@ -9168,7 +9168,7 @@ fn genBinOpMir(
9168 .lea_got,9168 .lea_got,
9169 .lea_tlv,9169 .lea_tlv,
9170 .lea_frame,9170 .lea_frame,
9171 .lea_memory,9171 .lea_symbol,
9172 .reserved_frame,9172 .reserved_frame,
9173 .air_ref,9173 .air_ref,
9174 => unreachable, // unmodifiable destination9174 => unreachable, // unmodifiable destination
...@@ -9251,8 +9251,8 @@ fn genBinOpMir(...@@ -9251,8 +9251,8 @@ fn genBinOpMir(
9251 .register_offset,9251 .register_offset,
9252 .memory,9252 .memory,
9253 .indirect,9253 .indirect,
9254 .load_memory,9254 .load_symbol,
9255 .lea_memory,9255 .lea_symbol,
9256 .load_direct,9256 .load_direct,
9257 .lea_direct,9257 .lea_direct,
9258 .load_got,9258 .load_got,
...@@ -9287,7 +9287,7 @@ fn genBinOpMir(...@@ -9287,7 +9287,7 @@ fn genBinOpMir(
9287 switch (src_mcv) {9287 switch (src_mcv) {
9288 .eflags,9288 .eflags,
9289 .register_offset,9289 .register_offset,
9290 .lea_memory,9290 .lea_symbol,
9291 .lea_direct,9291 .lea_direct,
9292 .lea_got,9292 .lea_got,
9293 .lea_tlv,9293 .lea_tlv,
...@@ -9303,7 +9303,7 @@ fn genBinOpMir(...@@ -9303,7 +9303,7 @@ fn genBinOpMir(
9303 );9303 );
9304 },9304 },
9305 .memory,9305 .memory,
9306 .load_memory,9306 .load_symbol,
9307 .load_direct,9307 .load_direct,
9308 .load_got,9308 .load_got,
9309 .load_tlv,9309 .load_tlv,
...@@ -9326,13 +9326,13 @@ fn genBinOpMir(...@@ -9326,13 +9326,13 @@ fn genBinOpMir(
9326 }9326 }
9327 }9327 }
9328 },9328 },
9329 .memory, .indirect, .load_memory, .load_got, .load_direct, .load_tlv, .load_frame => {9329 .memory, .indirect, .load_symbol, .load_got, .load_direct, .load_tlv, .load_frame => {
9330 const OpInfo = ?struct { addr_reg: Register, addr_lock: RegisterLock };9330 const OpInfo = ?struct { addr_reg: Register, addr_lock: RegisterLock };
9331 const limb_abi_size: u32 = @min(abi_size, 8);9331 const limb_abi_size: u32 = @min(abi_size, 8);
93329332
9333 const dst_info: OpInfo = switch (dst_mcv) {9333 const dst_info: OpInfo = switch (dst_mcv) {
9334 else => unreachable,9334 else => unreachable,
9335 .memory, .load_memory, .load_got, .load_direct, .load_tlv => dst: {9335 .memory, .load_symbol, .load_got, .load_direct, .load_tlv => dst: {
9336 const dst_addr_reg =9336 const dst_addr_reg =
9337 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();9337 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
9338 const dst_addr_lock = self.register_manager.lockRegAssumeUnused(dst_addr_reg);9338 const dst_addr_lock = self.register_manager.lockRegAssumeUnused(dst_addr_reg);
...@@ -9369,14 +9369,14 @@ fn genBinOpMir(...@@ -9369,14 +9369,14 @@ fn genBinOpMir(
9369 .lea_tlv,9369 .lea_tlv,
9370 .load_frame,9370 .load_frame,
9371 .lea_frame,9371 .lea_frame,
9372 .lea_memory,9372 .lea_symbol,
9373 => null,9373 => null,
9374 .memory, .load_memory, .load_got, .load_direct, .load_tlv => src: {9374 .memory, .load_symbol, .load_got, .load_direct, .load_tlv => src: {
9375 switch (resolved_src_mcv) {9375 switch (resolved_src_mcv) {
9376 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr))) != null and9376 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr))) != null and
9377 math.cast(i32, @as(i64, @bitCast(addr)) + abi_size - limb_abi_size) != null)9377 math.cast(i32, @as(i64, @bitCast(addr)) + abi_size - limb_abi_size) != null)
9378 break :src null,9378 break :src null,
9379 .load_memory, .load_got, .load_direct, .load_tlv => {},9379 .load_symbol, .load_got, .load_direct, .load_tlv => {},
9380 else => unreachable,9380 else => unreachable,
9381 }9381 }
93829382
...@@ -9418,7 +9418,7 @@ fn genBinOpMir(...@@ -9418,7 +9418,7 @@ fn genBinOpMir(
9418 Memory.PtrSize.fromSize(limb_abi_size),9418 Memory.PtrSize.fromSize(limb_abi_size),
9419 switch (dst_mcv) {9419 switch (dst_mcv) {
9420 .memory,9420 .memory,
9421 .load_memory,9421 .load_symbol,
9422 .load_got,9422 .load_got,
9423 .load_direct,9423 .load_direct,
9424 .load_tlv,9424 .load_tlv,
...@@ -9500,8 +9500,8 @@ fn genBinOpMir(...@@ -9500,8 +9500,8 @@ fn genBinOpMir(
9500 .eflags,9500 .eflags,
9501 .memory,9501 .memory,
9502 .indirect,9502 .indirect,
9503 .load_memory,9503 .load_symbol,
9504 .lea_memory,9504 .lea_symbol,
9505 .load_direct,9505 .load_direct,
9506 .lea_direct,9506 .lea_direct,
9507 .load_got,9507 .load_got,
...@@ -9519,7 +9519,7 @@ fn genBinOpMir(...@@ -9519,7 +9519,7 @@ fn genBinOpMir(
9519 },9519 },
9520 .eflags,9520 .eflags,
9521 .register_offset,9521 .register_offset,
9522 .lea_memory,9522 .lea_symbol,
9523 .lea_direct,9523 .lea_direct,
9524 .lea_got,9524 .lea_got,
9525 .lea_tlv,9525 .lea_tlv,
...@@ -9570,7 +9570,7 @@ fn genIntMulComplexOpMir(self: *Self, dst_ty: Type, dst_mcv: MCValue, src_mcv: M...@@ -9570,7 +9570,7 @@ fn genIntMulComplexOpMir(self: *Self, dst_ty: Type, dst_mcv: MCValue, src_mcv: M
9570 .eflags,9570 .eflags,
9571 .register_offset,9571 .register_offset,
9572 .register_overflow,9572 .register_overflow,
9573 .lea_memory,9573 .lea_symbol,
9574 .lea_direct,9574 .lea_direct,
9575 .lea_got,9575 .lea_got,
9576 .lea_tlv,9576 .lea_tlv,
...@@ -9617,8 +9617,8 @@ fn genIntMulComplexOpMir(self: *Self, dst_ty: Type, dst_mcv: MCValue, src_mcv: M...@@ -9617,8 +9617,8 @@ fn genIntMulComplexOpMir(self: *Self, dst_ty: Type, dst_mcv: MCValue, src_mcv: M
9617 },9617 },
9618 .register_offset,9618 .register_offset,
9619 .eflags,9619 .eflags,
9620 .load_memory,9620 .load_symbol,
9621 .lea_memory,9621 .lea_symbol,
9622 .load_direct,9622 .load_direct,
9623 .lea_direct,9623 .lea_direct,
9624 .load_got,9624 .load_got,
...@@ -9661,7 +9661,7 @@ fn genIntMulComplexOpMir(self: *Self, dst_ty: Type, dst_mcv: MCValue, src_mcv: M...@@ -9661,7 +9661,7 @@ fn genIntMulComplexOpMir(self: *Self, dst_ty: Type, dst_mcv: MCValue, src_mcv: M
9661 }9661 }
9662 },9662 },
9663 .register_pair => unreachable, // unimplemented9663 .register_pair => unreachable, // unimplemented
9664 .memory, .indirect, .load_memory, .load_direct, .load_got, .load_tlv, .load_frame => {9664 .memory, .indirect, .load_symbol, .load_direct, .load_got, .load_tlv, .load_frame => {
9665 const tmp_reg = try self.copyToTmpRegister(dst_ty, dst_mcv);9665 const tmp_reg = try self.copyToTmpRegister(dst_ty, dst_mcv);
9666 const tmp_mcv = MCValue{ .register = tmp_reg };9666 const tmp_mcv = MCValue{ .register = tmp_reg };
9667 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);9667 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);
...@@ -9761,7 +9761,7 @@ fn genVarDbgInfo(...@@ -9761,7 +9761,7 @@ fn genVarDbgInfo(
9761 // .offset = -off,9761 // .offset = -off,
9762 //} },9762 //} },
9763 .memory => |address| .{ .memory = address },9763 .memory => |address| .{ .memory = address },
9764 .load_memory => |sym_index| .{ .linker_load = .{ .type = .direct, .sym_index = sym_index } }, // TODO9764 .load_symbol => |sym_index| .{ .linker_load = .{ .type = .direct, .sym_index = sym_index } }, // TODO
9765 .load_got => |sym_index| .{ .linker_load = .{ .type = .got, .sym_index = sym_index } },9765 .load_got => |sym_index| .{ .linker_load = .{ .type = .got, .sym_index = sym_index } },
9766 .load_direct => |sym_index| .{ .linker_load = .{ .type = .direct, .sym_index = sym_index } },9766 .load_direct => |sym_index| .{ .linker_load = .{ .type = .direct, .sym_index = sym_index } },
9767 .immediate => |x| .{ .immediate = x },9767 .immediate => |x| .{ .immediate = x },
...@@ -10013,7 +10013,7 @@ fn genCall(self: *Self, info: union(enum) {...@@ -10013,7 +10013,7 @@ fn genCall(self: *Self, info: union(enum) {
10013 const sym = elf_file.symbol(sym_index);10013 const sym = elf_file.symbol(sym_index);
10014 _ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);10014 _ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
10015 if (self.bin_file.options.pic) {10015 if (self.bin_file.options.pic) {
10016 try self.genSetReg(.rax, Type.usize, .{ .lea_memory = sym.esym_index });10016 try self.genSetReg(.rax, Type.usize, .{ .lea_symbol = sym.esym_index });
10017 try self.asmRegister(.{ ._, .call }, .rax);10017 try self.asmRegister(.{ ._, .call }, .rax);
10018 } else {10018 } else {
10019 _ = try self.addInst(.{10019 _ = try self.addInst(.{
...@@ -10245,12 +10245,12 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {...@@ -10245,12 +10245,12 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {
10245 .lea_got,10245 .lea_got,
10246 .lea_tlv,10246 .lea_tlv,
10247 .lea_frame,10247 .lea_frame,
10248 .lea_memory,10248 .lea_symbol,
10249 .reserved_frame,10249 .reserved_frame,
10250 .air_ref,10250 .air_ref,
10251 => unreachable,10251 => unreachable,
10252 .register_pair, .load_frame => null,10252 .register_pair, .load_frame => null,
10253 .memory, .load_memory, .load_got, .load_direct, .load_tlv => dst: {10253 .memory, .load_symbol, .load_got, .load_direct, .load_tlv => dst: {
10254 switch (resolved_dst_mcv) {10254 switch (resolved_dst_mcv) {
10255 .memory => |addr| if (math.cast(10255 .memory => |addr| if (math.cast(
10256 i32,10256 i32,
...@@ -10259,7 +10259,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {...@@ -10259,7 +10259,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {
10259 i32,10259 i32,
10260 @as(i64, @bitCast(addr)) + abi_size - 8,10260 @as(i64, @bitCast(addr)) + abi_size - 8,
10261 ) != null) break :dst null,10261 ) != null) break :dst null,
10262 .load_memory, .load_got, .load_direct, .load_tlv => {},10262 .load_symbol, .load_got, .load_direct, .load_tlv => {},
10263 else => unreachable,10263 else => unreachable,
10264 }10264 }
1026510265
...@@ -10300,7 +10300,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {...@@ -10300,7 +10300,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {
10300 .register_offset,10300 .register_offset,
10301 .register_overflow,10301 .register_overflow,
10302 .indirect,10302 .indirect,
10303 .lea_memory,10303 .lea_symbol,
10304 .lea_direct,10304 .lea_direct,
10305 .lea_got,10305 .lea_got,
10306 .lea_tlv,10306 .lea_tlv,
...@@ -10309,7 +10309,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {...@@ -10309,7 +10309,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {
10309 .air_ref,10309 .air_ref,
10310 => unreachable,10310 => unreachable,
10311 .register_pair, .load_frame => null,10311 .register_pair, .load_frame => null,
10312 .memory, .load_memory, .load_got, .load_direct, .load_tlv => src: {10312 .memory, .load_symbol, .load_got, .load_direct, .load_tlv => src: {
10313 switch (resolved_src_mcv) {10313 switch (resolved_src_mcv) {
10314 .memory => |addr| if (math.cast(10314 .memory => |addr| if (math.cast(
10315 i32,10315 i32,
...@@ -10318,7 +10318,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {...@@ -10318,7 +10318,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: math.CompareOperator) !void {
10318 i32,10318 i32,
10319 @as(i64, @bitCast(addr)) + abi_size - 8,10319 @as(i64, @bitCast(addr)) + abi_size - 8,
10320 ) != null) break :src null,10320 ) != null) break :src null,
10321 .load_memory, .load_got, .load_direct, .load_tlv => {},10321 .load_symbol, .load_got, .load_direct, .load_tlv => {},
10322 else => unreachable,10322 else => unreachable,
10323 }10323 }
1032410324
...@@ -10743,7 +10743,7 @@ fn isNull(self: *Self, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue) !MC...@@ -10743,7 +10743,7 @@ fn isNull(self: *Self, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue) !MC
10743 .lea_got,10743 .lea_got,
10744 .lea_tlv,10744 .lea_tlv,
10745 .lea_frame,10745 .lea_frame,
10746 .lea_memory,10746 .lea_symbol,
10747 .reserved_frame,10747 .reserved_frame,
10748 .air_ref,10748 .air_ref,
10749 => unreachable,10749 => unreachable,
...@@ -10767,7 +10767,7 @@ fn isNull(self: *Self, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue) !MC...@@ -10767,7 +10767,7 @@ fn isNull(self: *Self, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue) !MC
10767 },10767 },
1076810768
10769 .memory,10769 .memory,
10770 .load_memory,10770 .load_symbol,
10771 .load_got,10771 .load_got,
10772 .load_direct,10772 .load_direct,
10773 .load_tlv,10773 .load_tlv,
...@@ -11365,7 +11365,7 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void {...@@ -11365,7 +11365,7 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void {
11365 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |_|11365 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |_|
11366 break :arg input_mcv,11366 break :arg input_mcv,
11367 .indirect, .load_frame => break :arg input_mcv,11367 .indirect, .load_frame => break :arg input_mcv,
11368 .load_memory, .load_direct, .load_got, .load_tlv => {},11368 .load_symbol, .load_direct, .load_got, .load_tlv => {},
11369 else => {11369 else => {
11370 const temp_mcv = try self.allocTempRegOrMem(ty, false);11370 const temp_mcv = try self.allocTempRegOrMem(ty, false);
11371 try self.genCopy(ty, temp_mcv, input_mcv);11371 try self.genCopy(ty, temp_mcv, input_mcv);
...@@ -11627,8 +11627,8 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void {...@@ -11627,8 +11627,8 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void {
11627 .{ .reg = try self.copyToTmpRegister(Type.usize, .{ .lea_got = sym_index }) }11627 .{ .reg = try self.copyToTmpRegister(Type.usize, .{ .lea_got = sym_index }) }
11628 else11628 else
11629 return self.fail("invalid modifier: '{s}'", .{modifier}),11629 return self.fail("invalid modifier: '{s}'", .{modifier}),
11630 .lea_memory => |sym_index| if (mem.eql(u8, modifier, "P"))11630 .lea_symbol => |sym_index| if (mem.eql(u8, modifier, "P"))
11631 .{ .reg = try self.copyToTmpRegister(Type.usize, .{ .lea_memory = sym_index }) }11631 .{ .reg = try self.copyToTmpRegister(Type.usize, .{ .lea_symbol = sym_index }) }
11632 else11632 else
11633 return self.fail("invalid modifier: '{s}'", .{modifier}),11633 return self.fail("invalid modifier: '{s}'", .{modifier}),
11634 else => return self.fail("invalid constraint: '{s}'", .{op_str}),11634 else => return self.fail("invalid constraint: '{s}'", .{op_str}),
...@@ -12186,7 +12186,7 @@ fn genCopy(self: *Self, ty: Type, dst_mcv: MCValue, src_mcv: MCValue) InnerError...@@ -12186,7 +12186,7 @@ fn genCopy(self: *Self, ty: Type, dst_mcv: MCValue, src_mcv: MCValue) InnerError
12186 .lea_got,12186 .lea_got,
12187 .lea_tlv,12187 .lea_tlv,
12188 .lea_frame,12188 .lea_frame,
12189 .lea_memory,12189 .lea_symbol,
12190 .reserved_frame,12190 .reserved_frame,
12191 .air_ref,12191 .air_ref,
12192 => unreachable, // unmodifiable destination12192 => unreachable, // unmodifiable destination
...@@ -12242,7 +12242,7 @@ fn genCopy(self: *Self, ty: Type, dst_mcv: MCValue, src_mcv: MCValue) InnerError...@@ -12242,7 +12242,7 @@ fn genCopy(self: *Self, ty: Type, dst_mcv: MCValue, src_mcv: MCValue) InnerError
12242 class_ty,12242 class_ty,
12243 .{ .register = src_regs[dst_reg_i] },12243 .{ .register = src_regs[dst_reg_i] },
12244 ),12244 ),
12245 .load_memory => {12245 .load_symbol => {
12246 const addr_reg = try self.copyToTmpRegister(Type.usize, src_mcv.address());12246 const addr_reg = try self.copyToTmpRegister(Type.usize, src_mcv.address());
12247 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);12247 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
12248 defer self.register_manager.unlockReg(addr_lock);12248 defer self.register_manager.unlockReg(addr_lock);
...@@ -12263,11 +12263,11 @@ fn genCopy(self: *Self, ty: Type, dst_mcv: MCValue, src_mcv: MCValue) InnerError...@@ -12263,11 +12263,11 @@ fn genCopy(self: *Self, ty: Type, dst_mcv: MCValue, src_mcv: MCValue) InnerError
12263 }12263 }
12264 },12264 },
12265 .indirect => |reg_off| try self.genSetMem(.{ .reg = reg_off.reg }, reg_off.off, ty, src_mcv),12265 .indirect => |reg_off| try self.genSetMem(.{ .reg = reg_off.reg }, reg_off.off, ty, src_mcv),
12266 .memory, .load_memory, .load_direct, .load_got, .load_tlv => {12266 .memory, .load_symbol, .load_direct, .load_got, .load_tlv => {
12267 switch (dst_mcv) {12267 switch (dst_mcv) {
12268 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|12268 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
12269 return self.genSetMem(.{ .reg = .ds }, small_addr, ty, src_mcv),12269 return self.genSetMem(.{ .reg = .ds }, small_addr, ty, src_mcv),
12270 .load_memory, .load_direct, .load_got, .load_tlv => {},12270 .load_symbol, .load_direct, .load_got, .load_tlv => {},
12271 else => unreachable,12271 else => unreachable,
12272 }12272 }
1227312273
...@@ -12443,7 +12443,7 @@ fn genSetReg(self: *Self, dst_reg: Register, ty: Type, src_mcv: MCValue) InnerEr...@@ -12443,7 +12443,7 @@ fn genSetReg(self: *Self, dst_reg: Register, ty: Type, src_mcv: MCValue) InnerEr
12443 else => unreachable,12443 else => unreachable,
12444 },12444 },
12445 )),12445 )),
12446 .memory, .load_memory, .load_direct, .load_got, .load_tlv => {12446 .memory, .load_symbol, .load_direct, .load_got, .load_tlv => {
12447 switch (src_mcv) {12447 switch (src_mcv) {
12448 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|12448 .memory => |addr| if (math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
12449 return (try self.moveStrategy(12449 return (try self.moveStrategy(
...@@ -12473,7 +12473,7 @@ fn genSetReg(self: *Self, dst_reg: Register, ty: Type, src_mcv: MCValue) InnerEr...@@ -12473,7 +12473,7 @@ fn genSetReg(self: *Self, dst_reg: Register, ty: Type, src_mcv: MCValue) InnerEr
12473 .segment, .mmx => unreachable,12473 .segment, .mmx => unreachable,
12474 .x87, .sse => {},12474 .x87, .sse => {},
12475 },12475 },
12476 .load_memory, .load_got, .load_tlv => {},12476 .load_symbol, .load_got, .load_tlv => {},
12477 else => unreachable,12477 else => unreachable,
12478 }12478 }
1247912479
...@@ -12487,7 +12487,7 @@ fn genSetReg(self: *Self, dst_reg: Register, ty: Type, src_mcv: MCValue) InnerEr...@@ -12487,7 +12487,7 @@ fn genSetReg(self: *Self, dst_reg: Register, ty: Type, src_mcv: MCValue) InnerEr
12487 Memory.sib(Memory.PtrSize.fromSize(abi_size), .{ .base = .{ .reg = addr_reg } }),12487 Memory.sib(Memory.PtrSize.fromSize(abi_size), .{ .base = .{ .reg = addr_reg } }),
12488 );12488 );
12489 },12489 },
12490 .lea_memory, .lea_direct, .lea_got => |sym_index| {12490 .lea_symbol, .lea_direct, .lea_got => |sym_index| {
12491 const atom_index = try self.owner.getSymbolIndex(self);12491 const atom_index = try self.owner.getSymbolIndex(self);
12492 if (self.bin_file.cast(link.File.Elf)) |elf_file| {12492 if (self.bin_file.cast(link.File.Elf)) |elf_file| {
12493 const sym = elf_file.symbol(elf_file.zigModulePtr().symbol(sym_index));12493 const sym = elf_file.symbol(elf_file.zigModulePtr().symbol(sym_index));
...@@ -12675,8 +12675,8 @@ fn genSetMem(self: *Self, base: Memory.Base, disp: i32, ty: Type, src_mcv: MCVal...@@ -12675,8 +12675,8 @@ fn genSetMem(self: *Self, base: Memory.Base, disp: i32, ty: Type, src_mcv: MCVal
12675 .lea_tlv,12675 .lea_tlv,
12676 .load_frame,12676 .load_frame,
12677 .lea_frame,12677 .lea_frame,
12678 .load_memory,12678 .load_symbol,
12679 .lea_memory,12679 .lea_symbol,
12680 => switch (abi_size) {12680 => switch (abi_size) {
12681 0 => {},12681 0 => {},
12682 1, 2, 4, 8 => {12682 1, 2, 4, 8 => {
...@@ -12767,8 +12767,8 @@ fn genLazySymbolRef(...@@ -12767,8 +12767,8 @@ fn genLazySymbolRef(
1276712767
12768 if (self.bin_file.options.pic) {12768 if (self.bin_file.options.pic) {
12769 switch (tag) {12769 switch (tag) {
12770 .lea, .call => try self.genSetReg(reg, Type.usize, .{ .lea_memory = sym.esym_index }),12770 .lea, .call => try self.genSetReg(reg, Type.usize, .{ .lea_symbol = sym.esym_index }),
12771 .mov => try self.genSetReg(reg, Type.usize, .{ .load_memory = sym.esym_index }),12771 .mov => try self.genSetReg(reg, Type.usize, .{ .load_symbol = sym.esym_index }),
12772 else => unreachable,12772 else => unreachable,
12773 }12773 }
12774 switch (tag) {12774 switch (tag) {
...@@ -14742,8 +14742,8 @@ fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {...@@ -14742,8 +14742,8 @@ fn genTypedValue(self: *Self, arg_tv: TypedValue) InnerError!MCValue {
14742 .undef => .undef,14742 .undef => .undef,
14743 .immediate => |imm| .{ .immediate = imm },14743 .immediate => |imm| .{ .immediate = imm },
14744 .memory => |addr| .{ .memory = addr },14744 .memory => |addr| .{ .memory = addr },
14745 .load_memory => |sym_index| .{ .load_memory = sym_index },14745 .load_symbol => |sym_index| .{ .load_symbol = sym_index },
14746 .lea_memory => |sym_index| .{ .lea_memory = sym_index },14746 .lea_symbol => |sym_index| .{ .lea_symbol = sym_index },
14747 .load_direct => |sym_index| .{ .load_direct = sym_index },14747 .load_direct => |sym_index| .{ .load_direct = sym_index },
14748 .load_got => |sym_index| .{ .lea_got = sym_index },14748 .load_got => |sym_index| .{ .lea_got = sym_index },
14749 .load_tlv => |sym_index| .{ .lea_tlv = sym_index },14749 .load_tlv => |sym_index| .{ .lea_tlv = sym_index },
src/codegen.zig+5-5
...@@ -827,8 +827,8 @@ pub const GenResult = union(enum) {...@@ -827,8 +827,8 @@ pub const GenResult = union(enum) {
827 memory: u64,827 memory: u64,
828 /// Reference to memory location but deferred until linker allocated the Decl in memory.828 /// Reference to memory location but deferred until linker allocated the Decl in memory.
829 /// Traditionally, this corresponds to emitting a relocation in a relocatable object file.829 /// Traditionally, this corresponds to emitting a relocation in a relocatable object file.
830 load_memory: u32,830 load_symbol: u32,
831 lea_memory: u32,831 lea_symbol: u32,
832 };832 };
833833
834 fn mcv(val: MCValue) GenResult {834 fn mcv(val: MCValue) GenResult {
...@@ -904,12 +904,12 @@ fn genDeclRef(...@@ -904,12 +904,12 @@ fn genDeclRef(
904 else904 else
905 null;905 null;
906 const sym_index = try elf_file.getGlobalSymbol(name, lib_name);906 const sym_index = try elf_file.getGlobalSymbol(name, lib_name);
907 return GenResult.mcv(.{ .lea_memory = sym_index });907 return GenResult.mcv(.{ .lea_symbol = sym_index });
908 }908 }
909 const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index);909 const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index);
910 const sym = elf_file.symbol(sym_index);910 const sym = elf_file.symbol(sym_index);
911 _ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);911 _ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
912 return GenResult.mcv(.{ .lea_memory = sym.esym_index });912 return GenResult.mcv(.{ .lea_symbol = sym.esym_index });
913 } else if (bin_file.cast(link.File.MachO)) |macho_file| {913 } else if (bin_file.cast(link.File.MachO)) |macho_file| {
914 const atom_index = try macho_file.getOrCreateAtomForDecl(decl_index);914 const atom_index = try macho_file.getOrCreateAtomForDecl(decl_index);
915 const sym_index = macho_file.getAtom(atom_index).getSymbolIndex().?;915 const sym_index = macho_file.getAtom(atom_index).getSymbolIndex().?;
...@@ -945,7 +945,7 @@ fn genUnnamedConst(...@@ -945,7 +945,7 @@ fn genUnnamedConst(
945 };945 };
946 if (bin_file.cast(link.File.Elf)) |elf_file| {946 if (bin_file.cast(link.File.Elf)) |elf_file| {
947 const local = elf_file.symbol(local_sym_index);947 const local = elf_file.symbol(local_sym_index);
948 return GenResult.mcv(.{ .load_memory = local.esym_index });948 return GenResult.mcv(.{ .load_symbol = local.esym_index });
949 } else if (bin_file.cast(link.File.MachO)) |_| {949 } else if (bin_file.cast(link.File.MachO)) |_| {
950 return GenResult.mcv(.{ .load_direct = local_sym_index });950 return GenResult.mcv(.{ .load_direct = local_sym_index });
951 } else if (bin_file.cast(link.File.Coff)) |_| {951 } else if (bin_file.cast(link.File.Coff)) |_| {