aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/behavior/call.zig141
1 files changed, 141 insertions, 0 deletions
diff --git a/test/behavior/call.zig b/test/behavior/call.zig
index 119dc289b1..27d0bbf1d6 100644
--- a/test/behavior/call.zig
+++ b/test/behavior/call.zig
@@ -118,3 +118,144 @@ test "result location of function call argument through runtime condition and st
.e = if (!runtime) .a else .b,
});
}
+
+test "function call with 40 arguments" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+
+ const S = struct {
+ fn doTheTest(thirty_nine: i32) !void {
+ const result = add(
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ thirty_nine,
+ 40,
+ );
+ try expect(result == 820);
+ try expect(thirty_nine == 39);
+ }
+
+ fn add(
+ a0: i32,
+ a1: i32,
+ a2: i32,
+ a3: i32,
+ a4: i32,
+ a5: i32,
+ a6: i32,
+ a7: i32,
+ a8: i32,
+ a9: i32,
+ a10: i32,
+ a11: i32,
+ a12: i32,
+ a13: i32,
+ a14: i32,
+ a15: i32,
+ a16: i32,
+ a17: i32,
+ a18: i32,
+ a19: i32,
+ a20: i32,
+ a21: i32,
+ a22: i32,
+ a23: i32,
+ a24: i32,
+ a25: i32,
+ a26: i32,
+ a27: i32,
+ a28: i32,
+ a29: i32,
+ a30: i32,
+ a31: i32,
+ a32: i32,
+ a33: i32,
+ a34: i32,
+ a35: i32,
+ a36: i32,
+ a37: i32,
+ a38: i32,
+ a39: i32,
+ a40: i32,
+ ) i32 {
+ return a0 +
+ a1 +
+ a2 +
+ a3 +
+ a4 +
+ a5 +
+ a6 +
+ a7 +
+ a8 +
+ a9 +
+ a10 +
+ a11 +
+ a12 +
+ a13 +
+ a14 +
+ a15 +
+ a16 +
+ a17 +
+ a18 +
+ a19 +
+ a20 +
+ a21 +
+ a22 +
+ a23 +
+ a24 +
+ a25 +
+ a26 +
+ a27 +
+ a28 +
+ a29 +
+ a30 +
+ a31 +
+ a32 +
+ a33 +
+ a34 +
+ a35 +
+ a36 +
+ a37 +
+ a38 +
+ a39 +
+ a40;
+ }
+ };
+ try S.doTheTest(39);
+}