@@ -235,6 +235,7 @@ _Bool test_promoted_cmpxchg(_Atomic(PS) *addr, PS *desired, PS *new) {
235
235
// CHECK: [[ATOMIC_DESIRED:%.*]] = alloca { %struct.PS, [2 x i8] }, align 8
236
236
// CHECK: [[ATOMIC_NEW:%.*]] = alloca { %struct.PS, [2 x i8] }, align 8
237
237
// CHECK: [[RES_ADDR:%.*]] = alloca i8, align 1
238
+ // CHECK: [[OLD_TMP:%.*]] = alloca i64, align 8
238
239
// CHECK: store ptr %addr, ptr [[ADDR_ARG]], align 4
239
240
// CHECK: store ptr %desired, ptr [[DESIRED_ARG]], align 4
240
241
// CHECK: store ptr %new, ptr [[NEW_ARG]], align 4
@@ -251,7 +252,8 @@ _Bool test_promoted_cmpxchg(_Atomic(PS) *addr, PS *desired, PS *new) {
251
252
// CHECK: [[RES_BOOL:%.*]] = extractvalue { i64, i1 } [[RES]], 1
252
253
// CHECK: br i1 [[RES_BOOL]], label {{%.*}}, label {{%.*}}
253
254
254
- // CHECK: store i64 [[RES_VAL64]], ptr [[ATOMIC_DESIRED]], align 8
255
+ // CHECK: store i64 [[RES_VAL64]], ptr [[OLD_TMP]], align 8
256
+ // CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 2 [[DESIRED_ARG:%.*]], ptr align 8 [[OLD_TMP]], i64 6, i1 false)
255
257
// CHECK: br label {{%.*}}
256
258
257
259
// CHECK: [[RES_BOOL8:%.*]] = zext i1 [[RES_BOOL]] to i8
0 commit comments