1 | // RUN: %clang_cc1 -triple x86_64-apple-macosx10.14.0 -fsanitize=unsigned-integer-overflow %s -emit-llvm -o - | FileCheck %s |
2 | |
3 | _Atomic(unsigned) atomic; |
4 | |
5 | // CHECK-LABEL: define void @cmpd_assign |
6 | void cmpd_assign() { |
7 | // CHECK: br label %[[LOOP_START:.*]] |
8 | |
9 | // CHECK: [[LOOP_START]]: |
10 | // CHECK-NEXT: phi i32 {{.*}}, [ {{.*}}, %[[INCOMING_BLOCK:.*]] ] |
11 | |
12 | // CHECK: [[INCOMING_BLOCK]]: |
13 | // CHECK-NEXT: cmpxchg |
14 | // CHECK-NEXT: extractvalue |
15 | // CHECK-NEXT: extractvalue |
16 | // CHECK-NEXT: br i1 %8, label %{{.*}}, label %[[LOOP_START]] |
17 | atomic += 1; |
18 | } |
19 | |
20 | // CHECK-LABEL: define void @inc |
21 | void inc() { |
22 | // CHECK: br label %[[LOOP_START:.*]] |
23 | |
24 | // CHECK: [[LOOP_START]]: |
25 | // CHECK-NEXT: phi i32 {{.*}}, [ {{.*}}, %[[INCOMING_BLOCK:.*]] ] |
26 | |
27 | // CHECK: [[INCOMING_BLOCK]]: |
28 | // CHECK-NEXT: cmpxchg |
29 | // CHECK-NEXT: extractvalue |
30 | // CHECK-NEXT: extractvalue |
31 | // CHECK-NEXT: br i1 %8, label %{{.*}}, label %[[LOOP_START]] |
32 | atomic++; |
33 | } |
34 | |