zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit ac36fe71147a78e5f9299428eee776efcc9e4afb (tree)
parent bbd7969c87e03c9312eeafd9940ef8287a3ad689
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Mon,  7 Feb 2022 16:23:37 +0100

stage2,x64: fix registerAlias helper function

Diffstat:
Msrc/arch/x86_64/CodeGen.zig | 18++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig @@ -4692,11 +4692,17 @@ fn parseRegName(name: []const u8) ?Register { fn registerAlias(reg: Register, size_bytes: u32) Register { // For x86_64 we have to pick a smaller register alias depending on abi size. - switch (size_bytes) { - 1 => return reg.to8(), - 2 => return reg.to16(), - 4 => return reg.to32(), - 8 => return reg.to64(), - else => unreachable, + if (size_bytes == 0) { + unreachable; // should be comptime known + } else if (size_bytes <= 1) { + return reg.to8(); + } else if (size_bytes <= 2) { + return reg.to16(); + } else if (size_bytes <= 4) { + return reg.to32(); + } else if (size_bytes <= 8) { + return reg.to64(); + } else { + unreachable; // TODO handle floating-point registers } }