diff options
| author | joachimschmidt557 <joachim.schmidt557@outlook.com> | 2020-12-30 19:54:34 +0100 |
|---|---|---|
| committer | joachimschmidt557 <joachim.schmidt557@outlook.com> | 2021-01-01 12:22:17 +0100 |
| commit | a2ab2fb9b080e233e1de2cb1ef74bdbc9476acb9 (patch) | |
| tree | 94476a135b37ef97d1310c078e73471fa4842644 /test | |
| parent | c52ca0b1780c2865cb0c242cb2f1a397766e6ce8 (diff) | |
| download | zig-a2ab2fb9b080e233e1de2cb1ef74bdbc9476acb9.tar.gz zig-a2ab2fb9b080e233e1de2cb1ef74bdbc9476acb9.zip | |
stage2 ARM: Add simple tests for conditional branching
Diffstat (limited to 'test')
| -rw-r--r-- | test/stage2/arm.zig | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/stage2/arm.zig b/test/stage2/arm.zig index 2326d723c6..dcab852784 100644 --- a/test/stage2/arm.zig +++ b/test/stage2/arm.zig @@ -282,4 +282,66 @@ pub fn addCases(ctx: *TestContext) !void { "123456", ); } + + { + var case = ctx.exe("if statements", linux_arm); + // Simple if statement in assert + case.addCompareOutput( + \\export fn _start() noreturn { + \\ var x: u32 = 123; + \\ var y: u32 = 42; + \\ assert(x > y); + \\ exit(); + \\} + \\ + \\fn assert(ok: bool) void { + \\ if (!ok) unreachable; + \\} + \\ + \\fn exit() noreturn { + \\ asm volatile ("svc #0" + \\ : + \\ : [number] "{r7}" (1), + \\ [arg1] "{r0}" (0) + \\ : "memory" + \\ ); + \\ unreachable; + \\} + , + "", + ); + } + + { + var case = ctx.exe("while loops", linux_arm); + // Simple while loop with assert + case.addCompareOutput( + \\export fn _start() noreturn { + \\ var x: u32 = 2020; + \\ var i: u32 = 0; + \\ while (x > 0) { + \\ x -= 2; + \\ i += 1; + \\ } + \\ assert(i == 1010); + \\ exit(); + \\} + \\ + \\fn assert(ok: bool) void { + \\ if (!ok) unreachable; + \\} + \\ + \\fn exit() noreturn { + \\ asm volatile ("svc #0" + \\ : + \\ : [number] "{r7}" (1), + \\ [arg1] "{r0}" (0) + \\ : "memory" + \\ ); + \\ unreachable; + \\} + , + "", + ); + } } |
