diff options
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 6a7b67aee2..47d33570d5 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -2489,6 +2489,25 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { }, else => return self.fail(src, "TODO implement getSetReg for arm {}", .{mcv}), }, + .aarch64 => switch (mcv) { + .dead => unreachable, + .ptr_stack_offset => unreachable, + .ptr_embedded_in_code => unreachable, + .unreach, .none => return, // Nothing to do. + .undef => { + if (!self.wantSafety()) + return; // The already existing value will do just fine. + // Write the debug undefined value. + switch (reg.size()) { + 32 => return self.genSetReg(src, reg, .{ .immediate = 0xaaaaaaaa }), + 64 => return self.genSetReg(src, reg, .{ .immediate = 0xaaaaaaaaaaaaaaaa }), + else => unreachable, // unexpected register size + } + }, + .immediate => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}), + .register => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}), + else => return self.fail(src, "TODO implement genSetReg for aarch64 {}", .{mcv}), + }, .riscv64 => switch (mcv) { .dead => unreachable, .ptr_stack_offset => unreachable, |
