mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
// #target: macos-x64
|
|
fn void errored()
|
|
{}
|
|
|
|
fn void test() {}
|
|
|
|
fn void testBreak()
|
|
{
|
|
for FOO: (int i = 0; i < 10; i++)
|
|
{
|
|
for (int j = 0; j < 10; j++)
|
|
{
|
|
for BAR: (int k = 0; k < 10; k++)
|
|
{
|
|
test();
|
|
continue FOO;
|
|
}
|
|
errored();
|
|
}
|
|
errored();
|
|
}
|
|
}
|
|
|
|
/* #expect: labelled_continue_for.ll
|
|
|
|
|
|
define void @labelled_continue_for.testBreak() #0 {
|
|
entry:
|
|
%i = alloca i32, align 4
|
|
%j = alloca i32, align 4
|
|
%k = alloca i32, align 4
|
|
store i32 0, ptr %i, align 4
|
|
br label %loop.cond
|
|
loop.cond: ; preds = %loop.inc, %entry
|
|
%0 = load i32, ptr %i, align 4
|
|
%lt = icmp slt i32 %0, 10
|
|
br i1 %lt, label %loop.body, label %loop.exit9
|
|
loop.body: ; preds = %loop.cond
|
|
store i32 0, ptr %j, align 4
|
|
br label %loop.cond1
|
|
loop.cond1: ; preds = %loop.exit, %loop.body
|
|
%1 = load i32, ptr %j, align 4
|
|
%lt2 = icmp slt i32 %1, 10
|
|
br i1 %lt2, label %loop.body3, label %loop.exit7
|
|
loop.body3: ; preds = %loop.cond1
|
|
store i32 0, ptr %k, align 4
|
|
br label %loop.cond4
|
|
loop.cond4: ; preds = %loop.body3
|
|
%2 = load i32, ptr %k, align 4
|
|
%lt5 = icmp slt i32 %2, 10
|
|
br i1 %lt5, label %loop.body6, label %loop.exit
|
|
loop.body6: ; preds = %loop.cond4
|
|
call void @labelled_continue_for.test()
|
|
br label %loop.inc
|
|
loop.exit: ; preds = %loop.cond4
|
|
call void @labelled_continue_for.errored()
|
|
%3 = load i32, ptr %j, align 4
|
|
%add = add i32 %3, 1
|
|
store i32 %add, ptr %j, align 4
|
|
br label %loop.cond1
|
|
loop.exit7: ; preds = %loop.cond1
|
|
call void @labelled_continue_for.errored()
|
|
br label %loop.inc
|
|
loop.inc: ; preds = %loop.exit7, %loop.body6
|
|
%4 = load i32, ptr %i, align 4
|
|
%add8 = add i32 %4, 1
|
|
store i32 %add8, ptr %i, align 4
|
|
br label %loop.cond
|
|
loop.exit9: ; preds = %loop.cond
|
|
ret void
|
|
}
|