@@ -746,3 +746,45 @@ define void @fixed_scalable_neg(ptr %ptr) vscale_range(1, 2) {
746746 store <4 x i64 > zeroinitializer , ptr %ptr
747747 ret void
748748}
749+
750+ define void @memset_different_attributes_1 (i1 %c , ptr %ptr ) {
751+ ; CHECK-LABEL: @memset_different_attributes_1(
752+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[PTR:%.*]], i8 0, i64 20, i1 false)
753+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[END:%.*]]
754+ ; CHECK: if:
755+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr dereferenceable(20) [[PTR]], i8 0, i64 20, i1 false)
756+ ; CHECK-NEXT: br label [[END]]
757+ ; CHECK: end:
758+ ; CHECK-NEXT: ret void
759+ ;
760+ call void @llvm.memset.p0.i64 (ptr %ptr , i8 0 , i64 20 , i1 false )
761+ br i1 %c , label %if , label %end
762+
763+ if:
764+ call void @llvm.memset.p0.i64 (ptr dereferenceable (20 ) %ptr , i8 0 , i64 20 , i1 false )
765+ br label %end
766+
767+ end:
768+ ret void
769+ }
770+
771+ define void @memset_different_attributes_2 (i1 %c , ptr %ptr ) {
772+ ; CHECK-LABEL: @memset_different_attributes_2(
773+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr dereferenceable(20) [[PTR:%.*]], i8 0, i64 20, i1 false)
774+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[END:%.*]]
775+ ; CHECK: if:
776+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[PTR]], i8 0, i64 20, i1 false)
777+ ; CHECK-NEXT: br label [[END]]
778+ ; CHECK: end:
779+ ; CHECK-NEXT: ret void
780+ ;
781+ call void @llvm.memset.p0.i64 (ptr dereferenceable (20 ) %ptr , i8 0 , i64 20 , i1 false )
782+ br i1 %c , label %if , label %end
783+
784+ if:
785+ call void @llvm.memset.p0.i64 (ptr %ptr , i8 0 , i64 20 , i1 false )
786+ br label %end
787+
788+ end:
789+ ret void
790+ }
0 commit comments