// #target: macos-x64 module test; extern fn int! maybe(); fn int tester(int n) { int! num = maybe(); assert(try num, "Hello"); int x = num; return num; } /* #expect: test.ll define i32 @test.tester(i32 %0) #0 { entry: %num = alloca i32, align 4 %num.f = alloca i64, align 8 %retparam = alloca i32, align 4 %x = alloca i32, align 4 %1 = call i64 @maybe(ptr %retparam) %not_err = icmp eq i64 %1, 0 %2 = call i1 @llvm.expect.i1(i1 %not_err, i1 true) br i1 %2, label %after_check, label %assign_optional assign_optional: ; preds = %entry store i64 %1, ptr %num.f, align 8 br label %after_assign after_check: ; preds = %entry %3 = load i32, ptr %retparam, align 4 store i32 %3, ptr %num, align 4 store i64 0, ptr %num.f, align 8 br label %after_assign after_assign: ; preds = %after_check, %assign_optional %4 = load i32, ptr %num, align 4 store i32 %4, ptr %x, align 4 %5 = load i32, ptr %num, align 4 ret i32 %5 }