aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJacob G-W <jacoblevgw@gmail.com>2021-11-13 12:52:17 -0500
committerJakub Konka <kubkon@jakubkonka.com>2021-11-19 09:38:36 +0100
commit149bc79486907745c8ffb12a69f65189b26c6dbe (patch)
treeee6c5033e669d2f48974ecd33617a1b6ae4a0643 /test
parent8fc3a707a44368f3f5c0ded0cc1b7080bf056761 (diff)
downloadzig-149bc79486907745c8ffb12a69f65189b26c6dbe.tar.gz
zig-149bc79486907745c8ffb12a69f65189b26c6dbe.zip
add tests for previous commit
Diffstat (limited to 'test')
-rw-r--r--test/cases.zig32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/cases.zig b/test/cases.zig
index 3a8389f7d4..eb0b8fb8b9 100644
--- a/test/cases.zig
+++ b/test/cases.zig
@@ -1819,4 +1819,36 @@ pub fn addCases(ctx: *TestContext) !void {
":2:28: error: cannot set address space of local variable 'foo'",
});
}
+ {
+ var case = ctx.exe("issue 10138: callee preserved regs working", linux_x64);
+ case.addCompareOutput(
+ \\pub fn main() void {
+ \\ const fd = open();
+ \\ _ = write(fd, "a", 1);
+ \\ _ = close(fd);
+ \\}
+ \\
+ \\fn open() usize {
+ \\ return 42;
+ \\}
+ \\
+ \\fn write(fd: usize, a: [*]const u8, len: usize) usize {
+ \\ return syscall4(.WRITE, fd, @ptrToInt(a), len);
+ \\}
+ \\
+ \\fn syscall4(n: enum { WRITE }, a: usize, b: usize, c: usize) usize {
+ \\ _ = n;
+ \\ _ = a;
+ \\ _ = b;
+ \\ _ = c;
+ \\ return 23;
+ \\}
+ \\
+ \\fn close(fd: usize) usize {
+ \\ if (fd != 42)
+ \\ unreachable;
+ \\ return 0;
+ \\}
+ , "");
+ }
}