// #target: macos-x64
module test;
import std;
fn void test(bool b) {}
fn void main()
{
	int a;
	test(!a);
	test(!!a);
	test(!!!a);
	test(!!!!a);
}

/* #expect: test.ll

define void @test.main() #0 {
entry:
  %a = alloca i32, align 4
  store i32 0, ptr %a, align 4
  %0 = load i32, ptr %a, align 4
  %i2nb = icmp eq i32 %0, 0
  %1 = zext i1 %i2nb to i8
  call void @test.test(i8 zeroext %1)
  %2 = load i32, ptr %a, align 4
  %i2b = icmp ne i32 %2, 0
  %3 = zext i1 %i2b to i8
  call void @test.test(i8 zeroext %3)
  %4 = load i32, ptr %a, align 4
  %i2nb1 = icmp eq i32 %4, 0
  %5 = zext i1 %i2nb1 to i8
  call void @test.test(i8 zeroext %5)
  %6 = load i32, ptr %a, align 4
  %i2b2 = icmp ne i32 %6, 0
  %7 = zext i1 %i2b2 to i8
  call void @test.test(i8 zeroext %7)
  ret void
}
