aboutsummaryrefslogtreecommitdiff
path: root/src/target.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-06-27 17:12:45 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-06-27 17:12:45 -0700
commit3c1daf951cf72e454de18e70f84b9a896aa17dd0 (patch)
tree1d7069eba60eedb08b8cf38eb6c2b1ade1752beb /src/target.zig
parent8d8a5f973314cb692d543773db8d59a9001b91ad (diff)
downloadzig-3c1daf951cf72e454de18e70f84b9a896aa17dd0.tar.gz
zig-3c1daf951cf72e454de18e70f84b9a896aa17dd0.zip
LLVM: fix invalid IR on `@returnAddress` of wasm/bpf
see #11946
Diffstat (limited to 'src/target.zig')
-rw-r--r--src/target.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/target.zig b/src/target.zig
index 14af2675d2..93c179b7f0 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -283,6 +283,14 @@ pub fn supportsStackProbing(target: std.Target) bool {
(target.cpu.arch == .i386 or target.cpu.arch == .x86_64);
}
+pub fn supportsReturnAddress(target: std.Target) bool {
+ return switch (target.cpu.arch) {
+ .wasm32, .wasm64 => target.os.tag == .emscripten,
+ .bpfel, .bpfeb => false,
+ else => true,
+ };
+}
+
pub fn osToLLVM(os_tag: std.Target.Os.Tag) llvm.OSType {
return switch (os_tag) {
.freestanding, .other, .opencl, .glsl450, .vulkan, .plan9 => .UnknownOS,