From 650785c718b29496548b06bd043eb03887a182d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 7 Aug 2024 02:04:59 +0200 Subject: [PATCH 1/3] target: Fix hasLlvmSupport() for dxil, spirv[32,64], and kalimba. --- src/target.zig | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/target.zig b/src/target.zig index 768e4d957e..b9ff8ba5be 100644 --- a/src/target.zig +++ b/src/target.zig @@ -119,7 +119,6 @@ pub fn hasLlvmSupport(target: std.Target, ofmt: std.Target.ObjectFormat) bool { .bpfel, .bpfeb, .csky, - .dxil, .hexagon, .loongarch32, .loongarch64, @@ -147,17 +146,23 @@ pub fn hasLlvmSupport(target: std.Target, ofmt: std.Target.ObjectFormat) bool { .xtensa, .nvptx, .nvptx64, - .spirv, - .spirv32, - .spirv64, - .kalimba, .lanai, .wasm32, .wasm64, .ve, => true, - .spu_2 => false, + // An LLVM backend exists but we don't currently support using it. + .dxil, + .spirv, + .spirv32, + .spirv64, + => false, + + // No LLVM backend exists. + .kalimba, + .spu_2, + => false, }; } From a9f68410d0a6dd4c2509cf897b283c7ab8f97bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 7 Aug 2024 02:05:43 +0200 Subject: [PATCH 2/3] llvm: Clarify in initializeLLVMTarget() that there's no kalimba backend. --- src/codegen/llvm.zig | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 23e39caa98..6c78fcfe37 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -12083,14 +12083,16 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { llvm.LLVMInitializeLoongArchAsmParser(); }, - // LLVM backends that have no initialization functions. + // We don't currently support using these backends. .spirv, .spirv32, .spirv64, - .kalimba, .dxil, => {}, - .spu_2 => unreachable, // LLVM does not support this backend + // LLVM does does not have a backend for these. + .kalimba, + .spu_2, + => unreachable, } } From 746f20d21fcd6a0a9ccbf662cd381f16c5064cd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 7 Aug 2024 02:08:34 +0200 Subject: [PATCH 3/3] llvm: Use unreachable in targetTriple() for targets without LLVM support. --- src/codegen/llvm.zig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 6c78fcfe37..621490f7c7 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -81,12 +81,14 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { .spirv => "spirv", .spirv32 => "spirv32", .spirv64 => "spirv64", - .kalimba => "kalimba", .lanai => "lanai", .wasm32 => "wasm32", .wasm64 => "wasm64", .ve => "ve", - .spu_2 => return error.@"LLVM backend does not support SPU Mark II", + + .kalimba, + .spu_2, + => unreachable, // Gated by hasLlvmSupport(). }; try llvm_triple.appendSlice(llvm_arch); try llvm_triple.appendSlice("-unknown-");