Files
c3c/test/test_suite/defer/defer_and_expr_block.c3t
2023-06-18 23:25:33 +02:00

39 lines
853 B
C

// #target: macos-x64
module foo;
extern fn void printf(char*,...);
fn void main()
{
defer printf("On exit\n");
{|
defer printf("Baz\n");
defer {|
defer printf("Hello!\n");
defer printf("1\n");
if (true) return 12;
defer printf("2\n");
return 34;
|};
|};
defer printf("On 2\n");
}
/* #expect: foo.ll
define void @foo.main() #0 {
entry:
%blockret = alloca i32, align 4
br label %if.then
if.then: ; preds = %entry
store i32 12, ptr %blockret, align 4
call void (ptr, ...) @printf(ptr @.str)
call void (ptr, ...) @printf(ptr @.str.1)
br label %expr_block.exit
expr_block.exit: ; preds = %if.then
call void (ptr, ...) @printf(ptr @.str.5)
call void (ptr, ...) @printf(ptr @.str.6)
call void (ptr, ...) @printf(ptr @.str.7)
ret void
}