diff options
Diffstat (limited to 'src/target.zig')
| -rw-r--r-- | src/target.zig | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/target.zig b/src/target.zig index 95c9798f65..aeef764a8d 100644 --- a/src/target.zig +++ b/src/target.zig @@ -427,17 +427,14 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 { // Once our self-hosted linker can handle both ABIs, this hack should go away. if (target.cpu.arch == .powerpc64) return "elfv2"; - const have_float = switch (target.abi) { - .gnueabihf, .musleabihf, .eabihf => true, - else => false, - }; - switch (target.cpu.arch) { .riscv64 => { const featureSetHas = std.Target.riscv.featureSetHas; - if (featureSetHas(target.cpu.features, .d)) { + if (featureSetHas(target.cpu.features, .e)) { + return "lp64e"; + } else if (featureSetHas(target.cpu.features, .d)) { return "lp64d"; - } else if (have_float) { + } else if (featureSetHas(target.cpu.features, .f)) { return "lp64f"; } else { return "lp64"; @@ -445,12 +442,12 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 { }, .riscv32 => { const featureSetHas = std.Target.riscv.featureSetHas; - if (featureSetHas(target.cpu.features, .d)) { + if (featureSetHas(target.cpu.features, .e)) { + return "ilp32e"; + } else if (featureSetHas(target.cpu.features, .d)) { return "ilp32d"; - } else if (have_float) { + } else if (featureSetHas(target.cpu.features, .f)) { return "ilp32f"; - } else if (featureSetHas(target.cpu.features, .e)) { - return "ilp32e"; } else { return "ilp32"; } |
