aboutsummaryrefslogtreecommitdiff
path: root/src/target.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-06-30 14:31:46 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-06-30 18:33:02 -0700
commit152462e2e1513ca9d7db5c2d6a2a61b547c5151c (patch)
treebb541574002b430386c403b1a45e7bc92b3c3c93 /src/target.zig
parent902dc8c721c762bc5d1b9786bad47b21da45042c (diff)
downloadzig-152462e2e1513ca9d7db5c2d6a2a61b547c5151c.tar.gz
zig-152462e2e1513ca9d7db5c2d6a2a61b547c5151c.zip
stage2: object format affects whether LLVM can be used
Diffstat (limited to 'src/target.zig')
-rw-r--r--src/target.zig19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/target.zig b/src/target.zig
index 93c179b7f0..ea8b3efc45 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -204,7 +204,24 @@ pub fn hasValgrindSupport(target: std.Target) bool {
/// The set of targets that LLVM has non-experimental support for.
/// Used to select between LLVM backend and self-hosted backend when compiling in
/// release modes.
-pub fn hasLlvmSupport(target: std.Target) bool {
+pub fn hasLlvmSupport(target: std.Target, ofmt: std.Target.ObjectFormat) bool {
+ switch (ofmt) {
+ // LLVM does not support these object formats:
+ .c,
+ .plan9,
+ => return false,
+
+ .coff,
+ .elf,
+ .macho,
+ .wasm,
+ .spirv,
+ .hex,
+ .raw,
+ .nvptx,
+ => {},
+ }
+
return switch (target.cpu.arch) {
.arm,
.armeb,