mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 20:11:17 +00:00
30 lines
726 B
Plaintext
30 lines
726 B
Plaintext
|
|
func void! test()
|
|
{
|
|
int! i;
|
|
i!!;
|
|
}
|
|
|
|
// #expect: rethrow.ll
|
|
|
|
%i = alloca i32
|
|
%i1 = alloca { i64, i64 }, align 8
|
|
%error_var = alloca { i64, i64 }, align 8
|
|
store { i64, i64 } zeroinitializer, { i64, i64 }* %i1
|
|
store i32 0, i32* %i
|
|
%0 = load { i64, i64 }, { i64, i64 }* %i1
|
|
%1 = extractvalue { i64, i64 } %0, 0
|
|
%noerr = icmp eq i64 %1, 0
|
|
br i1 %noerr, label %after_check, label %error
|
|
error:
|
|
store { i64, i64 } %0, { i64, i64 }* %error_var
|
|
br label %guard_block
|
|
after_check:
|
|
%2 = load i32, i32* %i, align 4
|
|
br label %noerr_block
|
|
guard_block:
|
|
%3 = load { i64, i64 }, { i64, i64 }* %error_var
|
|
ret { i64, i64 } %3
|
|
noerr_block:
|
|
ret { i64, i64 } zeroinitializer
|