@@ -58,9 +58,9 @@ void testMoveConstructor(SA a) {
5858// CHECK: store ptr %[[THIS]], ptr %[[THIS_ADDR]], align 8
5959// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
6060// CHECK: %[[THISI:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
61- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
61+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
6262// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
63- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
63+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
6464// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
6565// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
6666// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
@@ -83,9 +83,9 @@ void testCopyAssignment(SA a) {
8383// CHECK: store ptr %[[THIS]], ptr %[[THIS_ADDR]], align 8
8484// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
8585// CHECK: %[[THISI:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
86- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
86+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
8787// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
88- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
88+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
8989// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
9090// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
9191// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
@@ -137,9 +137,9 @@ void testMoveAssignment(SI a) {
137137// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
138138// CHECK: %[[THIS1:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
139139// IOS: store ptr %[[THIS1]], ptr %[[RETVAL]], align 8
140- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
140+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
141141// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
142- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
142+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
143143// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
144144// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
145145// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
@@ -156,9 +156,9 @@ void testMoveAssignment(SI a) {
156156// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
157157// CHECK: %[[THIS1:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
158158// IOS: store ptr %[[THIS1]], ptr %[[RETVAL]], align 8
159- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
159+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
160160// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
161- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
161+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
162162// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
163163// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
164164// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
0 commit comments