// #target: macos-x64
module test;
import libc;
faultdef FOO;


macro test()
{
	defer libc::printf("Test2\n");
	return FOO~;
}

fn void main()
{
	defer libc::printf("Test1\n");
	libc::printf("%d\n", test() ?? 2);
}

/* #expect: test.ll

define void @test.main() #0 {
entry:
  %blockret = alloca i32, align 4
  br label %opt_block_cleanup

opt_block_cleanup:                                ; preds = %entry
  %0 = call i32 (ptr, ...) @printf(ptr @.str.2)
  br label %else_block

else_block:                                       ; preds = %opt_block_cleanup
  %1 = call i32 (ptr, ...) @printf(ptr @.str, i32 2)
  %2 = call i32 (ptr, ...) @printf(ptr @.str.3)
  ret void
}
