// #target: macos-x64 module test; typedef Int4s = int[<4>] @simd; typedef Int3 = int[<3>]; struct Foo1 { Int3 bar; } struct Foo2 { Int4s bar; } fn int main() { Foo1 f1 = {{1,2,3}}; Foo2 f2 = {{1,2,3,4}}; return 0; } /* #expect: test.ll %Foo2 = type { <4 x i32> } %Foo1 = type { [3 x i32] } @.__const = private unnamed_addr constant { [3 x i32] } { [3 x i32] [i32 1, i32 2, i32 3] }, align 4 @.__const.1 = private unnamed_addr constant %Foo2 { <4 x i32> }, align 16 define i32 @main() #0 { entry: %f1 = alloca %Foo1, align 4 %f2 = alloca %Foo2, align 16 call void @llvm.memcpy.p0.p0.i32(ptr align 4 %f1, ptr align 4 @.__const, i32 12, i1 false) call void @llvm.memcpy.p0.p0.i32(ptr align 16 %f2, ptr align 16 @.__const.1, i32 16, i1 false) ret i32 0 }