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