@@ -25,16 +25,10 @@ void consume(int* __bidi_indexable);
2525// LEGACY-SAME: i32 noundef [[COUNT:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
2626// LEGACY-NEXT: [[ENTRY:.*:]]
2727// LEGACY-NEXT: [[BYVAL_TEMP:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
28- // LEGACY-NEXT: [[IDX_EXT:%.*]] = sext i32 [[COUNT]] to i64
29- // LEGACY-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr null, i64 [[IDX_EXT]]
30- // LEGACY-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR3:[0-9]+]]
31- // LEGACY-NEXT: store ptr null, ptr [[BYVAL_TEMP]], align 8
32- // LEGACY-NEXT: [[PTR_SROA_4_0_BYVAL_TEMP_SROA_IDX:%.*]] = getelementptr inbounds nuw i8, ptr [[BYVAL_TEMP]], i64 8
33- // LEGACY-NEXT: store ptr [[ADD_PTR]], ptr [[PTR_SROA_4_0_BYVAL_TEMP_SROA_IDX]], align 8
34- // LEGACY-NEXT: [[PTR_SROA_5_0_BYVAL_TEMP_SROA_IDX:%.*]] = getelementptr inbounds nuw i8, ptr [[BYVAL_TEMP]], i64 16
35- // LEGACY-NEXT: store ptr null, ptr [[PTR_SROA_5_0_BYVAL_TEMP_SROA_IDX]], align 8, !tbaa [[TBAA2:![0-9]+]]
36- // LEGACY-NEXT: call void @consume(ptr noundef nonnull [[BYVAL_TEMP]]) #[[ATTR3]]
37- // LEGACY-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR3]]
28+ // LEGACY-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR4:[0-9]+]]
29+ // LEGACY-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) [[BYVAL_TEMP]], i8 0, i64 24, i1 false)
30+ // LEGACY-NEXT: call void @consume(ptr noundef nonnull [[BYVAL_TEMP]]) #[[ATTR4]]
31+ // LEGACY-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR4]]
3832// LEGACY-NEXT: ret void
3933//
4034void use_inline_header_func_unspecified_ptr (int count ) {
@@ -62,16 +56,10 @@ void use_inline_header_func_unspecified_ptr(int count) {
6256// LEGACY-SAME: i32 noundef [[COUNT:%.*]]) local_unnamed_addr #[[ATTR0]] {
6357// LEGACY-NEXT: [[ENTRY:.*:]]
6458// LEGACY-NEXT: [[BYVAL_TEMP:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
65- // LEGACY-NEXT: [[IDX_EXT:%.*]] = sext i32 [[COUNT]] to i64
66- // LEGACY-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr null, i64 [[IDX_EXT]]
67- // LEGACY-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR3]]
68- // LEGACY-NEXT: store ptr null, ptr [[BYVAL_TEMP]], align 8
69- // LEGACY-NEXT: [[PTR_SROA_4_0_BYVAL_TEMP_SROA_IDX:%.*]] = getelementptr inbounds nuw i8, ptr [[BYVAL_TEMP]], i64 8
70- // LEGACY-NEXT: store ptr [[ADD_PTR]], ptr [[PTR_SROA_4_0_BYVAL_TEMP_SROA_IDX]], align 8
71- // LEGACY-NEXT: [[PTR_SROA_5_0_BYVAL_TEMP_SROA_IDX:%.*]] = getelementptr inbounds nuw i8, ptr [[BYVAL_TEMP]], i64 16
72- // LEGACY-NEXT: store ptr null, ptr [[PTR_SROA_5_0_BYVAL_TEMP_SROA_IDX]], align 8, !tbaa [[TBAA2]]
73- // LEGACY-NEXT: call void @consume(ptr noundef nonnull [[BYVAL_TEMP]]) #[[ATTR3]]
74- // LEGACY-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR3]]
59+ // LEGACY-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR4]]
60+ // LEGACY-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) [[BYVAL_TEMP]], i8 0, i64 24, i1 false)
61+ // LEGACY-NEXT: call void @consume(ptr noundef nonnull [[BYVAL_TEMP]]) #[[ATTR4]]
62+ // LEGACY-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR4]]
7563// LEGACY-NEXT: ret void
7664//
7765void use_inline_header_func_unsafe_indexable_ptr (int count ) {
@@ -82,9 +70,3 @@ void use_inline_header_func_unsafe_indexable_ptr(int count) {
8270// CHECK: [[META2]] = !{!"bounds-safety-generic"}
8371// CHECK: [[PROF3]] = !{!"branch_weights", i32 1048575, i32 1}
8472//.
85- // LEGACY: [[TBAA2]] = !{[[META3:![0-9]+]], [[META3]], i64 0}
86- // LEGACY: [[META3]] = !{!"p1 int", [[META4:![0-9]+]], i64 0}
87- // LEGACY: [[META4]] = !{!"any pointer", [[META5:![0-9]+]], i64 0}
88- // LEGACY: [[META5]] = !{!"omnipotent char", [[META6:![0-9]+]], i64 0}
89- // LEGACY: [[META6]] = !{!"Simple C/C++ TBAA"}
90- //.
0 commit comments