@@ -235,6 +235,7 @@ _Bool test_promoted_cmpxchg(_Atomic(PS) *addr, PS *desired, PS *new) {
235235 // CHECK: [[ATOMIC_DESIRED:%.*]] = alloca { %struct.PS, [2 x i8] }, align 8
236236 // CHECK: [[ATOMIC_NEW:%.*]] = alloca { %struct.PS, [2 x i8] }, align 8
237237 // CHECK: [[RES_ADDR:%.*]] = alloca i8, align 1
238+ // CHECK: [[OLD_TMP:%.*]] = alloca i64, align 8
238239 // CHECK: store ptr %addr, ptr [[ADDR_ARG]], align 4
239240 // CHECK: store ptr %desired, ptr [[DESIRED_ARG]], align 4
240241 // CHECK: store ptr %new, ptr [[NEW_ARG]], align 4
@@ -251,7 +252,8 @@ _Bool test_promoted_cmpxchg(_Atomic(PS) *addr, PS *desired, PS *new) {
251252 // CHECK: [[RES_BOOL:%.*]] = extractvalue { i64, i1 } [[RES]], 1
252253 // CHECK: br i1 [[RES_BOOL]], label {{%.*}}, label {{%.*}}
253254
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)
255257 // CHECK: br label {{%.*}}
256258
257259 // CHECK: [[RES_BOOL8:%.*]] = zext i1 [[RES_BOOL]] to i8
0 commit comments