diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-07 16:23:37 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-07 20:13:29 +0100 |
| commit | ac36fe71147a78e5f9299428eee776efcc9e4afb (patch) | |
| tree | e0f37c25786d30541c69709f427ee7799bf617ff /src | |
| parent | bbd7969c87e03c9312eeafd9940ef8287a3ad689 (diff) | |
| download | zig-ac36fe71147a78e5f9299428eee776efcc9e4afb.tar.gz zig-ac36fe71147a78e5f9299428eee776efcc9e4afb.zip | |
stage2,x64: fix registerAlias helper function
Diffstat (limited to 'src')
| -rw-r--r-- | src/arch/x86_64/CodeGen.zig | 18 |
1 files 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 } } |
