2019-02-28 08:47:55 +08:00
|
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.14.0 -fsanitize=unsigned-integer-overflow %s -emit-llvm -o - | FileCheck %s
|
|
|
|
|
|
|
|
_Atomic(unsigned) atomic;
|
|
|
|
|
2020-12-31 12:45:56 +08:00
|
|
|
// CHECK-LABEL: define{{.*}} void @cmpd_assign
|
2022-02-16 05:06:01 +08:00
|
|
|
void cmpd_assign(void) {
|
2019-02-28 08:47:55 +08:00
|
|
|
// CHECK: br label %[[LOOP_START:.*]]
|
|
|
|
|
|
|
|
// CHECK: [[LOOP_START]]:
|
|
|
|
// CHECK-NEXT: phi i32 {{.*}}, [ {{.*}}, %[[INCOMING_BLOCK:.*]] ]
|
|
|
|
|
|
|
|
// CHECK: [[INCOMING_BLOCK]]:
|
|
|
|
// CHECK-NEXT: cmpxchg
|
|
|
|
// CHECK-NEXT: extractvalue
|
|
|
|
// CHECK-NEXT: extractvalue
|
|
|
|
// CHECK-NEXT: br i1 %8, label %{{.*}}, label %[[LOOP_START]]
|
|
|
|
atomic += 1;
|
|
|
|
}
|
|
|
|
|
2020-12-31 12:45:56 +08:00
|
|
|
// CHECK-LABEL: define{{.*}} void @inc
|
2022-02-16 05:06:01 +08:00
|
|
|
void inc(void) {
|
2019-02-28 08:47:55 +08:00
|
|
|
// CHECK: br label %[[LOOP_START:.*]]
|
|
|
|
|
|
|
|
// CHECK: [[LOOP_START]]:
|
|
|
|
// CHECK-NEXT: phi i32 {{.*}}, [ {{.*}}, %[[INCOMING_BLOCK:.*]] ]
|
|
|
|
|
|
|
|
// CHECK: [[INCOMING_BLOCK]]:
|
|
|
|
// CHECK-NEXT: cmpxchg
|
|
|
|
// CHECK-NEXT: extractvalue
|
|
|
|
// CHECK-NEXT: extractvalue
|
|
|
|
// CHECK-NEXT: br i1 %8, label %{{.*}}, label %[[LOOP_START]]
|
|
|
|
atomic++;
|
|
|
|
}
|