mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
41 lines
1.1 KiB
C
41 lines
1.1 KiB
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
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0))
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i32 0, i32 0))
|
|
store i32 12, i32* %blockret, align 4
|
|
br label %expr_block.exit
|
|
|
|
expr_block.exit: ; preds = %if.then
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i32 0, i32 0))
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0))
|
|
call void (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i32 0, i32 0))
|
|
ret void
|
|
}
|
|
|