authorgravatar for davidgm94.work@protonmail.comDavid Gonzalez Martin <davidgm94.work@protonmail.com> 2023-06-02 16:32:43-06:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2023-06-06 18:30:56+00:00
logc16d4ab9e41be6b5c560d15eaa145ff3a0ffce6c
treed31db393866590a8b1d21bcc720bfb34e2627366
parent9ee0a706da66e271ce0f79d00566dbe40b57b83e

llvm: stop generating FPU code if there is no FPU

Fixes https://github.com/ziglang/zig/issues/14465 For aarch64, LLVM was crashing because Zig commands it to generate FPU code even when there is no FPU present. This commit implements the necessary checks to avoid this undesired situation and aarch64 can be compiled again with no FPU.

1 files changed, 2 insertions(+), 0 deletions(-)

src/codegen/llvm.zig+2
...@@ -11165,6 +11165,7 @@ fn backendSupportsF16(target: std.Target) bool {...@@ -11165,6 +11165,7 @@ fn backendSupportsF16(target: std.Target) bool {
11165 .mips64,11165 .mips64,
11166 .mips64el,11166 .mips64el,
11167 => false,11167 => false,
11168 .aarch64 => std.Target.aarch64.featureSetHas(target.cpu.features, .fp_armv8),
11168 else => true,11169 else => true,
11169 };11170 };
11170}11171}
...@@ -11175,6 +11176,7 @@ fn backendSupportsF16(target: std.Target) bool {...@@ -11175,6 +11176,7 @@ fn backendSupportsF16(target: std.Target) bool {
11175fn backendSupportsF128(target: std.Target) bool {11176fn backendSupportsF128(target: std.Target) bool {
11176 return switch (target.cpu.arch) {11177 return switch (target.cpu.arch) {
11177 .amdgcn => false,11178 .amdgcn => false,
11179 .aarch64 => std.Target.aarch64.featureSetHas(target.cpu.features, .fp_armv8),
11178 else => true,11180 else => true,
11179 };11181 };
11180}11182}