From ac36fe71147a78e5f9299428eee776efcc9e4afb Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Mon, 7 Feb 2022 16:23:37 +0100 Subject: [PATCH] stage2,x64: fix registerAlias helper function --- src/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 index 7baf74c9c2..1aac404346 100644 --- 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 } }