; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -instcombine -verify < %s | FileCheck %s define <vscale x 4 x i32> @alloca(<vscale x 4 x i32> %z) { ; CHECK-LABEL: @alloca( ; CHECK-NEXT: ret <vscale x 4 x i32> [[Z:%.*]] ; %a = alloca <vscale x 4 x i32> store <vscale x 4 x i32> %z, <vscale x 4 x i32>* %a %load = load <vscale x 4 x i32>, <vscale x 4 x i32>* %a ret <vscale x 4 x i32> %load } define void @alloca_dead_store(<vscale x 4 x i32> %z) { ; CHECK-LABEL: @alloca_dead_store( ; CHECK-NEXT: ret void ; %a = alloca <vscale x 4 x i32> store <vscale x 4 x i32> %z, <vscale x 4 x i32>* %a ret void } declare void @use(...) define void @alloca_zero_byte_move_first_inst() { ; CHECK-LABEL: @alloca_zero_byte_move_first_inst( ; CHECK-NEXT: [[B:%.*]] = alloca {}, align 8 ; CHECK-NEXT: [[A:%.*]] = alloca <vscale x 16 x i8>, align 16 ; CHECK-NEXT: call void (...) @use(<vscale x 16 x i8>* nonnull [[A]]) ; CHECK-NEXT: call void (...) @use({}* nonnull [[B]]) ; CHECK-NEXT: ret void ; %a = alloca <vscale x 16 x i8> call void (...) @use( <vscale x 16 x i8>* %a ) %b = alloca { } call void (...) @use( { }* %b ) ret void }