module test;

macro int[2] test(#abc) @safemacro
{
	return #abc;
}

fn void main()
{
	int[2] x = (int[2]) { 1, 2 };
	int[2] y = test({ 2, 3 });
	int[2] z = test({ [0] = 1 });
}

/* #expect: test.ll

@.__const = private unnamed_addr constant [2 x i32] [i32 1, i32 2], align 4
@.__const.1 = private unnamed_addr constant [2 x i32] [i32 2, i32 3], align 4
@.__const.2 = private unnamed_addr constant [2 x i32] [i32 1, i32 0], align 4

  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %x, ptr align 4 @.__const, i32 8, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %y, ptr align 4 @.__const.1, i32 8, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %z, ptr align 4 @.__const.2, i32 8, i1 false)
