@@ -57,9 +57,9 @@ void testMoveConstructor(SA a) {
5757// CHECK: store ptr %[[THIS]], ptr %[[THIS_ADDR]], align 8
5858// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
5959// CHECK: %[[THISI:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
60- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
60+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
6161// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
62- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
62+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
6363// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
6464// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
6565// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
@@ -82,9 +82,9 @@ void testCopyAssignment(SA a) {
8282// CHECK: store ptr %[[THIS]], ptr %[[THIS_ADDR]], align 8
8383// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
8484// CHECK: %[[THISI:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
85- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
85+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THISI]], i32 0, i32 0
8686// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
87- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
87+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
8888// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
8989// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
9090// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
@@ -136,9 +136,9 @@ void testMoveAssignment(SI a) {
136136// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
137137// CHECK: %[[THIS1:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
138138// CHECK: store ptr %[[THIS1]], ptr %[[RETVAL]], align 8
139- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
139+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
140140// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
141- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
141+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
142142// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
143143// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
144144// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
@@ -155,9 +155,9 @@ void testMoveAssignment(SI a) {
155155// CHECK: store ptr %[[V0:.*]], ptr %[[_ADDR]], align 8
156156// CHECK: %[[THIS1:.*]] = load ptr, ptr %[[THIS_ADDR]], align 8
157157// CHECK: store ptr %[[THIS1]], ptr %[[RETVAL]], align 8
158- // CHECK: %[[M0:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
158+ // CHECK: %[[M0:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[THIS1]], i32 0, i32 0
159159// CHECK: %[[V1:.*]] = load ptr, ptr %[[_ADDR]], align 8
160- // CHECK: %[[M02:.*]] = getelementptr inbounds %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
160+ // CHECK: %[[M02:.*]] = getelementptr inbounds nuw %[[STRUCT_SA]], ptr %[[V1]], i32 0, i32 0
161161// CHECK: %[[V2:.*]] = load ptr, ptr %[[M02]], align 8
162162// CHECK: %[[V3:.*]] = ptrtoint ptr %[[M02]] to i64
163163// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.blend(i64 %[[V3]], i64 50)
0 commit comments