// #target: macos-x64 module test; fn int main() { int[<2>] z = { 1, 2 }; z <<= 2; z << 2; int x; z <<= { x, 2 }; z << { 1, 2 }; z <<= { 1, 2 }; return 0; } /* #expect: test.ll entry: %z = alloca <2 x i32>, align 8 %x = alloca i32, align 4 store <2 x i32> , ptr %z, align 8 %0 = load <2 x i32>, ptr %z, align 8 %shl = shl <2 x i32> %0, %1 = freeze <2 x i32> %shl store <2 x i32> %1, ptr %z, align 8 %2 = load <2 x i32>, ptr %z, align 8 %shl1 = shl <2 x i32> %2, %3 = freeze <2 x i32> %shl1 store i32 0, ptr %x, align 4 %4 = load <2 x i32>, ptr %z, align 8 %5 = load i32, ptr %x, align 4 %6 = insertelement <2 x i32> undef, i32 %5, i64 0 %7 = insertelement <2 x i32> %6, i32 2, i64 1 %shl2 = shl <2 x i32> %4, %7 %8 = freeze <2 x i32> %shl2 store <2 x i32> %8, ptr %z, align 8 %9 = load <2 x i32>, ptr %z, align 8 %shl3 = shl <2 x i32> %9, %10 = freeze <2 x i32> %shl3 %11 = load <2 x i32>, ptr %z, align 8 %shl4 = shl <2 x i32> %11, %12 = freeze <2 x i32> %shl4 store <2 x i32> %12, ptr %z, align 8 ret i32 0