// #target: macos-x64

module array_casts;

fn void test()
{
    int[3] x;
    int *y = &x;
    int[] z = &x;
}

/* #expect: array_casts.ll

%"int[]" = type { ptr, i64 }

define void @array_casts.test() #0 {
entry:
  %x = alloca [3 x i32], align 4
  %y = alloca ptr, align 8
  %z = alloca %"int[]", align 8
  store i32 0, ptr %x, align 4
  %ptradd = getelementptr inbounds i8, ptr %x, i64 4
  store i32 0, ptr %ptradd, align 4
  %ptradd1 = getelementptr inbounds i8, ptr %x, i64 8
  store i32 0, ptr %ptradd1, align 4
  store ptr %x, ptr %y, align 8
  %0 = insertvalue %"int[]" undef, ptr %x, 0
  %1 = insertvalue %"int[]" %0, i64 3, 1
  store %"int[]" %1, ptr %z, align 8
  ret void
}