// #target: macos-x64 int[<4>] baz = { 1, 4, 5, 7 }; fn void main() { int[<4>] foo = { 1, 2, 3, 4 }; int z = foo[0]; foo[2] = z + 1; int[<4>] bar = {}; int[<4>] bar2 = { 1, z, 3, 4 }; int[<4>] bar3 = { [1] = z }; int[<4>] bar4 = { [0..3] = z }; } /* #expect: vector_init.ll @vector_init.baz = local_unnamed_addr global <4 x i32> , align 16 define void @vector_init.main() #0 { entry: %foo = alloca <4 x i32>, align 16 %z = alloca i32, align 4 %bar = alloca <4 x i32>, align 16 %bar2 = alloca <4 x i32>, align 16 %bar3 = alloca <4 x i32>, align 16 %bar4 = alloca <4 x i32>, align 16 store <4 x i32> , ptr %foo, align 16 %0 = load <4 x i32>, ptr %foo, align 16 %1 = extractelement <4 x i32> %0, i64 0 store i32 %1, ptr %z, align 4 %2 = load <4 x i32>, ptr %foo, align 16 %3 = load i32, ptr %z, align 4 %add = add i32 %3, 1 %elemset = insertelement <4 x i32> %2, i32 %add, i64 2 store <4 x i32> %elemset, ptr %foo, align 16 store <4 x i32> zeroinitializer, ptr %bar, align 16 %4 = load i32, ptr %z, align 4 %5 = insertelement <4 x i32> , i32 %4, i64 1 %6 = insertelement <4 x i32> %5, i32 3, i64 2 %7 = insertelement <4 x i32> %6, i32 4, i64 3 store <4 x i32> %7, ptr %bar2, align 16 %8 = load i32, ptr %z, align 4 %9 = insertelement <4 x i32> zeroinitializer, i32 %8, i64 1 store <4 x i32> %9, ptr %bar3, align 16 %10 = load i32, ptr %z, align 4 %11 = insertelement <4 x i32> zeroinitializer, i32 %10, i64 0 %12 = insertelement <4 x i32> %11, i32 %10, i64 1 %13 = insertelement <4 x i32> %12, i32 %10, i64 2 %14 = insertelement <4 x i32> %13, i32 %10, i64 3 store <4 x i32> %14, ptr %bar4, align 16 ret void }