aboutsummaryrefslogtreecommitdiff
path: root/src/target.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/target.zig')
-rw-r--r--src/target.zig19
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";
}