samsonov created this revision.
samsonov added reviewers: dnovillo, bogner.
samsonov added a subscriber: cfe-commits.

This patch is generated by running "s/store/atomicrmw add/".
As a side note, it's sort of unfortunate that LLVM-specific code
(InstrProfiling instrumentation) is tests only by Clang testsuite.

http://reviews.llvm.org/D11580

Files:
  test/Profile/c-captured.c
  test/Profile/c-general.c
  test/Profile/c-unreachable-after-switch.c
  test/Profile/cxx-class.cpp
  test/Profile/cxx-lambda.cpp
  test/Profile/cxx-rangefor.cpp
  test/Profile/cxx-templates.cpp
  test/Profile/cxx-throws.cpp
  test/Profile/objc-general.m

Index: test/Profile/objc-general.m
===================================================================
--- test/Profile/objc-general.m
+++ test/Profile/objc-general.m
@@ -42,19 +42,19 @@
 @implementation A
 // PGOGEN: define {{.*}}+[A foreach:]
 // PGOUSE: define {{.*}}+[A foreach:]
-// PGOGEN: store {{.*}} @[[FRC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[FRC]], i64 0, i64 0
 + (void)foreach: (NSArray *)array
 {
   __block id result;
-  // PGOGEN: store {{.*}} @[[FRC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[FRC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[FR1:[0-9]+]]
   // PGOUSE: br {{.*}} !prof ![[FR2:[0-9]+]]
   for (id x in array) {
     // PGOGEN: define {{.*}}_block_invoke
     // PGOUSE: define {{.*}}_block_invoke
-    // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 0
+    // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 0
     ^{ static int init = 0;
-      // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 1
+      // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 1
       // PGOUSE: br {{.*}} !prof ![[BL1:[0-9]+]]
        if (init)
          result = x;
Index: test/Profile/cxx-throws.cpp
===================================================================
--- test/Profile/cxx-throws.cpp
+++ test/Profile/cxx-throws.cpp
@@ -16,16 +16,16 @@
 
 // PGOGEN-LABEL: @_Z6throwsv()
 // PGOUSE-LABEL: @_Z6throwsv()
-// PGOGEN: store {{.*}} @[[THC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 0
 void throws() {
-  // PGOGEN: store {{.*}} @[[THC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[TH1:[0-9]+]]
   for (int i = 0; i < 100; ++i) {
     try {
-      // PGOGEN: store {{.*}} @[[THC]], i64 0, i64 3
+      // PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 3
       // PGOUSE: br {{.*}} !prof ![[TH2:[0-9]+]]
       if (i % 3) {
-        // PGOGEN: store {{.*}} @[[THC]], i64 0, i64 4
+        // PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 4
         // PGOUSE: br {{.*}} !prof ![[TH3:[0-9]+]]
         if (i < 50)
           throw 1;
@@ -36,23 +36,23 @@
         // PGOUSE: if.else{{.*}}:
         // PGOGEN: if.else{{.*}}:
 
-        // PGOGEN: store {{.*}} @[[THC]], i64 0, i64 5
+        // PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 5
         // PGOUSE: br {{.*}} !prof ![[TH4:[0-9]+]]
         if (i >= 50)
           throw 0;
       }
     } catch (int e) {
       // PGOUSE-EXC: catch{{.*}}:
       // PGOGEN-EXC: catch{{.*}}:
 
-      // PGOGEN-EXC: store {{.*}} @[[THC]], i64 0, i64 6
-      // PGOGEN-EXC: store {{.*}} @[[THC]], i64 0, i64 7
+      // PGOGEN-EXC: atomicrmw add {{.*}} @[[THC]], i64 0, i64 6
+      // PGOGEN-EXC: atomicrmw add {{.*}} @[[THC]], i64 0, i64 7
       // PGOUSE-EXC: br {{.*}} !prof ![[TH5:[0-9]+]]
       if (e) {}
     }
-    // PGOGEN: store {{.*}} @[[THC]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 2
 
-    // PGOGEN: store {{.*}} @[[THC]], i64 0, i64 8
+    // PGOGEN: atomicrmw add {{.*}} @[[THC]], i64 0, i64 8
     // PGOUSE: br {{.*}} !prof ![[TH6:[0-9]+]]
     if (i < 100) {}
   }
@@ -63,14 +63,14 @@
 
 // PGOGEN-LABEL: @_Z11unreachablei(i32
 // PGOUSE-LABEL: @_Z11unreachablei(i32
-// PGOGEN: store {{.*}} @[[UNC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[UNC]], i64 0, i64 0
 void unreachable(int i) {
-  // PGOGEN: store {{.*}} @[[UNC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[UNC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[UN1:[0-9]+]]
   if (i)
     throw i;
 
-  // PGOGEN: store {{.*}} @[[UNC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[UNC]], i64 0, i64 2
   // Since we never reach here, the weights should all be zero (and skipped)
   // PGOUSE-NOT: br {{.*}} !prof !{{.*}}
   if (i) {}
Index: test/Profile/cxx-templates.cpp
===================================================================
--- test/Profile/cxx-templates.cpp
+++ test/Profile/cxx-templates.cpp
@@ -19,13 +19,13 @@
 // T100USE-LABEL: define linkonce_odr {{.*}}void @_Z4loopILj100EEvv()
 template <unsigned N> void loop() {
   // ALL-NOT: ret
-  // T0GEN: store {{.*}} @[[T0C]], i64 0, i64 0
-  // T100GEN: store {{.*}} @[[T100C]], i64 0, i64 0
+  // T0GEN: atomicrmw add {{.*}} @[[T0C]], i64 0, i64 0
+  // T100GEN: atomicrmw add {{.*}} @[[T100C]], i64 0, i64 0
 
   // ALL-NOT: ret
-  // T0GEN: store {{.*}} @[[T0C]], i64 0, i64 1
+  // T0GEN: atomicrmw add {{.*}} @[[T0C]], i64 0, i64 1
   // T0USE: br {{.*}} !prof ![[T01:[0-9]+]]
-  // T100GEN: store {{.*}} @[[T100C]], i64 0, i64 1
+  // T100GEN: atomicrmw add {{.*}} @[[T100C]], i64 0, i64 1
   // T100USE: br {{.*}} !prof ![[T1001:[0-9]+]]
   for (unsigned I = 0; I < N; ++I) {}
 
Index: test/Profile/cxx-rangefor.cpp
===================================================================
--- test/Profile/cxx-rangefor.cpp
+++ test/Profile/cxx-rangefor.cpp
@@ -10,25 +10,25 @@
 // PGOGEN: @[[RFC:__llvm_profile_counters__Z9range_forv]] = private global [5 x i64] zeroinitializer
 
 // CHECK-LABEL: define {{.*}}void @_Z9range_forv()
-// PGOGEN: store {{.*}} @[[RFC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[RFC]], i64 0, i64 0
 void range_for() {
   int arr[] = {1, 2, 3, 4, 5};
   int sum = 0;
-  // PGOGEN: store {{.*}} @[[RFC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[RFC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[RF1:[0-9]+]]
   for (auto i : arr) {
-    // PGOGEN: store {{.*}} @[[RFC]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[RFC]], i64 0, i64 2
     // PGOUSE: br {{.*}} !prof ![[RF2:[0-9]+]]
     if (i == 3)
       continue;
     sum += i;
-    // PGOGEN: store {{.*}} @[[RFC]], i64 0, i64 3
+    // PGOGEN: atomicrmw add {{.*}} @[[RFC]], i64 0, i64 3
     // PGOUSE: br {{.*}} !prof ![[RF3:[0-9]+]]
     if (sum >= 7)
       break;
   }
 
-  // PGOGEN: store {{.*}} @[[RFC]], i64 0, i64 4
+  // PGOGEN: atomicrmw add {{.*}} @[[RFC]], i64 0, i64 4
   // PGOUSE: br {{.*}} !prof ![[RF4:[0-9]+]]
   if (sum) {}
 }
Index: test/Profile/cxx-lambda.cpp
===================================================================
--- test/Profile/cxx-lambda.cpp
+++ test/Profile/cxx-lambda.cpp
@@ -15,32 +15,32 @@
 
 // PGOGEN-LABEL: define {{.*}}void @_Z7lambdasv()
 // PGOUSE-LABEL: define {{.*}}void @_Z7lambdasv()
-// PGOGEN: store {{.*}} @[[LWC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[LWC]], i64 0, i64 0
 void lambdas() {
   int i = 1;
 
   // LMBGEN-LABEL: define internal{{( [0-9_a-z]*cc)?( zeroext)?}} i1 @"_ZZ7lambdasvENK3$_0clEi"(
   // LMBUSE-LABEL: define internal{{( [0-9_a-z]*cc)?( zeroext)?}} i1 @"_ZZ7lambdasvENK3$_0clEi"(
-  // LMBGEN: store {{.*}} @[[LFC]], i64 0, i64 0
+  // LMBGEN: atomicrmw add {{.*}} @[[LFC]], i64 0, i64 0
   auto f = [&i](int k) {
-    // LMBGEN: store {{.*}} @[[LFC]], i64 0, i64 1
+    // LMBGEN: atomicrmw add {{.*}} @[[LFC]], i64 0, i64 1
     // LMBUSE: br {{.*}} !prof ![[LF1:[0-9]+]]
     if (i > 0) {}
-    // LMBGEN: store {{.*}} @[[LFC]], i64 0, i64 2
+    // LMBGEN: atomicrmw add {{.*}} @[[LFC]], i64 0, i64 2
     // LMBUSE: br {{.*}} !prof ![[LF2:[0-9]+]]
     return k && i;
   };
 
-  // PGOGEN: store {{.*}} @[[LWC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[LWC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[LW1:[0-9]+]]
   if (i) {}
 
-  // PGOGEN: store {{.*}} @[[LWC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[LWC]], i64 0, i64 2
   // PGOUSE: br {{.*}} !prof ![[LW2:[0-9]+]]
   for (i = 0; i < 10; ++i)
     f(9 - i);
 
-  // PGOGEN: store {{.*}} @[[LWC]], i64 0, i64 3
+  // PGOGEN: atomicrmw add {{.*}} @[[LWC]], i64 0, i64 3
   // PGOUSE: br {{.*}} !prof ![[LW3:[0-9]+]]
   if (i) {}
 }
Index: test/Profile/cxx-class.cpp
===================================================================
--- test/Profile/cxx-class.cpp
+++ test/Profile/cxx-class.cpp
@@ -18,55 +18,55 @@
 public:
   // CTRGEN-LABEL: define {{.*}} @_ZN6SimpleC2Ei(
   // CTRUSE-LABEL: define {{.*}} @_ZN6SimpleC2Ei(
-  // CTRGEN: store {{.*}} @[[SCC:__llvm_profile_counters__ZN6SimpleC2Ei]], i64 0, i64 0
+  // CTRGEN: atomicrmw add {{.*}} @[[SCC:__llvm_profile_counters__ZN6SimpleC2Ei]], i64 0, i64 0
   explicit Simple(int Member) : Member(Member) {
-    // CTRGEN: store {{.*}} @[[SCC]], i64 0, i64 1
+    // CTRGEN: atomicrmw add {{.*}} @[[SCC]], i64 0, i64 1
     // CTRUSE: br {{.*}} !prof ![[SC1:[0-9]+]]
     if (Member) {}
-    // CTRGEN-NOT: store {{.*}} @[[SCC]],
+    // CTRGEN-NOT: atomicrmw add {{.*}} @[[SCC]],
     // CTRUSE-NOT: br {{.*}} !prof ![0-9]+
     // CTRUSE: ret
   }
   // CTRUSE: ![[SC1]] = !{!"branch_weights", i32 100, i32 2}
 
   // DTRGEN-LABEL: define {{.*}} @_ZN6SimpleD2Ev(
   // DTRUSE-LABEL: define {{.*}} @_ZN6SimpleD2Ev(
-  // DTRGEN: store {{.*}} @[[SDC:__llvm_profile_counters__ZN6SimpleD2Ev]], i64 0, i64 0
+  // DTRGEN: atomicrmw add {{.*}} @[[SDC:__llvm_profile_counters__ZN6SimpleD2Ev]], i64 0, i64 0
   ~Simple() {
-    // DTRGEN: store {{.*}} @[[SDC]], i64 0, i64 1
+    // DTRGEN: atomicrmw add {{.*}} @[[SDC]], i64 0, i64 1
     // DTRUSE: br {{.*}} !prof ![[SD1:[0-9]+]]
     if (Member) {}
-    // DTRGEN-NOT: store {{.*}} @[[SDC]],
+    // DTRGEN-NOT: atomicrmw add {{.*}} @[[SDC]],
     // DTRUSE-NOT: br {{.*}} !prof ![0-9]+
     // DTRUSE: ret
   }
   // DTRUSE: ![[SD1]] = !{!"branch_weights", i32 100, i32 2}
 
   // MTHGEN-LABEL: define {{.*}} @_ZN6Simple6methodEv(
   // MTHUSE-LABEL: define {{.*}} @_ZN6Simple6methodEv(
-  // MTHGEN: store {{.*}} @[[SMC:__llvm_profile_counters__ZN6Simple6methodEv]], i64 0, i64 0
+  // MTHGEN: atomicrmw add {{.*}} @[[SMC:__llvm_profile_counters__ZN6Simple6methodEv]], i64 0, i64 0
   void method() {
-    // MTHGEN: store {{.*}} @[[SMC]], i64 0, i64 1
+    // MTHGEN: atomicrmw add {{.*}} @[[SMC]], i64 0, i64 1
     // MTHUSE: br {{.*}} !prof ![[SM1:[0-9]+]]
     if (Member) {}
-    // MTHGEN-NOT: store {{.*}} @[[SMC]],
+    // MTHGEN-NOT: atomicrmw add {{.*}} @[[SMC]],
     // MTHUSE-NOT: br {{.*}} !prof ![0-9]+
     // MTHUSE: ret
   }
   // MTHUSE: ![[SM1]] = !{!"branch_weights", i32 100, i32 2}
 };
 
 // WRPGEN-LABEL: define {{.*}} @_Z14simple_wrapperv(
 // WRPUSE-LABEL: define {{.*}} @_Z14simple_wrapperv(
-// WRPGEN: store {{.*}} @[[SWC:__llvm_profile_counters__Z14simple_wrapperv]], i64 0, i64 0
+// WRPGEN: atomicrmw add {{.*}} @[[SWC:__llvm_profile_counters__Z14simple_wrapperv]], i64 0, i64 0
 void simple_wrapper() {
-  // WRPGEN: store {{.*}} @[[SWC]], i64 0, i64 1
+  // WRPGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 1
   // WRPUSE: br {{.*}} !prof ![[SW1:[0-9]+]]
   for (int I = 0; I < 100; ++I) {
     Simple S(I);
     S.method();
   }
-  // WRPGEN-NOT: store {{.*}} @[[SWC]],
+  // WRPGEN-NOT: atomicrmw add {{.*}} @[[SWC]],
   // WRPUSE-NOT: br {{.*}} !prof ![0-9]+
   // WRPUSE: ret
 }
Index: test/Profile/c-unreachable-after-switch.c
===================================================================
--- test/Profile/c-unreachable-after-switch.c
+++ test/Profile/c-unreachable-after-switch.c
@@ -3,13 +3,13 @@
 // CHECK: @[[C:__llvm_profile_counters_foo]] = private global [3 x i64] zeroinitializer
 
 // CHECK-LABEL: @foo()
-// CHECK: store {{.*}} @[[C]], i64 0, i64 0
+// CHECK: atomicrmw add {{.*}} @[[C]], i64 0, i64 0
 void foo() {
-  // CHECK: store {{.*}} @[[C]], i64 0, i64 2
+  // CHECK: atomicrmw add {{.*}} @[[C]], i64 0, i64 2
   switch (0) {
   default:
     return;
   }
   // We shouldn't emit the unreachable counter. This used to crash in GlobalDCE.
-  // CHECK-NOT: store {{.*}} @[[SWC]], i64 0, i64 1}
+  // CHECK-NOT: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 1}
 }
Index: test/Profile/c-general.c
===================================================================
--- test/Profile/c-general.c
+++ test/Profile/c-general.c
@@ -23,434 +23,434 @@
 
 // PGOGEN-LABEL: @simple_loops()
 // PGOUSE-LABEL: @simple_loops()
-// PGOGEN: store {{.*}} @[[SLC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[SLC]], i64 0, i64 0
 void simple_loops() {
   int i;
-  // PGOGEN: store {{.*}} @[[SLC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[SLC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[SL1:[0-9]+]]
   for (i = 0; i < 100; ++i) {
   }
-  // PGOGEN: store {{.*}} @[[SLC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[SLC]], i64 0, i64 2
   // PGOUSE: br {{.*}} !prof ![[SL2:[0-9]+]]
   while (i > 0)
     i--;
-  // PGOGEN: store {{.*}} @[[SLC]], i64 0, i64 3
+  // PGOGEN: atomicrmw add {{.*}} @[[SLC]], i64 0, i64 3
   // PGOUSE: br {{.*}} !prof ![[SL3:[0-9]+]]
   do {} while (i++ < 75);
 
-  // PGOGEN-NOT: store {{.*}} @[[SLC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[SLC]]
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @conditionals()
 // PGOUSE-LABEL: @conditionals()
-// PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 0
 void conditionals() {
-  // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[IF1:[0-9]+]]
   for (int i = 0; i < 100; ++i) {
-    // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 2
     // PGOUSE: br {{.*}} !prof ![[IF2:[0-9]+]]
     if (i % 2) {
-      // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 3
+      // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 3
       // PGOUSE: br {{.*}} !prof ![[IF3:[0-9]+]]
       if (i) {}
-    // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 4
+    // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 4
     // PGOUSE: br {{.*}} !prof ![[IF4:[0-9]+]]
     } else if (i % 3) {
-      // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 5
+      // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 5
       // PGOUSE: br {{.*}} !prof ![[IF5:[0-9]+]]
       if (i) {}
     } else {
-      // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 6
+      // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 6
       // PGOUSE: br {{.*}} !prof ![[IF6:[0-9]+]]
       if (i) {}
     }
 
-    // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 8
-    // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 7
+    // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 8
+    // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 7
     // PGOUSE: br {{.*}} !prof ![[IF7:[0-9]+]]
     if (1 && i) {}
-    // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 10
-    // PGOGEN: store {{.*}} @[[IFC]], i64 0, i64 9
+    // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 10
+    // PGOGEN: atomicrmw add {{.*}} @[[IFC]], i64 0, i64 9
     // PGOUSE: br {{.*}} !prof ![[IF8:[0-9]+]]
     if (0 || i) {}
   }
 
-  // PGOGEN-NOT: store {{.*}} @[[IFC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[IFC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @early_exits()
 // PGOUSE-LABEL: @early_exits()
-// PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 0
 void early_exits() {
   int i = 0;
 
-  // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[EE1:[0-9]+]]
   if (i) {}
 
-  // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 2
   // PGOUSE: br {{.*}} !prof ![[EE2:[0-9]+]]
   while (i < 100) {
     i++;
-    // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 3
+    // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 3
     // PGOUSE: br {{.*}} !prof ![[EE3:[0-9]+]]
     if (i > 50)
       break;
-    // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 4
+    // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 4
     // PGOUSE: br {{.*}} !prof ![[EE4:[0-9]+]]
     if (i % 2)
       continue;
   }
 
-  // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 5
+  // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 5
   // PGOUSE: br {{.*}} !prof ![[EE5:[0-9]+]]
   if (i) {}
 
-  // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 6
+  // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 6
   do {
-    // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 7
+    // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 7
     // PGOUSE: br {{.*}} !prof ![[EE6:[0-9]+]]
     if (i > 75)
       return;
     else
       i++;
   // PGOUSE: br {{.*}} !prof ![[EE7:[0-9]+]]
   } while (i < 100);
 
-  // PGOGEN: store {{.*}} @[[EEC]], i64 0, i64 8
+  // PGOGEN: atomicrmw add {{.*}} @[[EEC]], i64 0, i64 8
   // Never reached -> no weights
   if (i) {}
 
-  // PGOGEN-NOT: store {{.*}} @[[EEC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[EEC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @jumps()
 // PGOUSE-LABEL: @jumps()
-// PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 0
 void jumps() {
   int i;
 
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[JM1:[0-9]+]]
   for (i = 0; i < 2; ++i) {
     goto outofloop;
     // Never reached -> no weights
     if (i) {}
   }
-// PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 3
+// PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 3
 outofloop:
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 4
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 4
   // PGOUSE: br {{.*}} !prof ![[JM2:[0-9]+]]
   if (i) {}
 
   goto loop1;
 
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 5
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 5
   // PGOUSE: br {{.*}} !prof ![[JM3:[0-9]+]]
   while (i) {
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 6
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 6
   loop1:
-    // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 7
+    // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 7
     // PGOUSE: br {{.*}} !prof ![[JM4:[0-9]+]]
     if (i) {}
   }
 
   goto loop2;
-// PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 8
+// PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 8
 first:
-// PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 9
+// PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 9
 second:
-// PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 10
+// PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 10
 third:
   i++;
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 11
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 11
   // PGOUSE: br {{.*}} !prof ![[JM5:[0-9]+]]
   if (i < 3)
     goto loop2;
 
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 12
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 12
   // PGOUSE: br {{.*}} !prof ![[JM6:[0-9]+]]
   while (i < 3) {
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 13
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 13
   loop2:
     // PGOUSE: switch {{.*}} [
     // PGOUSE: ], !prof ![[JM7:[0-9]+]]
     switch (i) {
-    // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 15
+    // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 15
     case 0:
       goto first;
-    // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 16
+    // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 16
     case 1:
       goto second;
-    // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 17
+    // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 17
     case 2:
       goto third;
     }
-    // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 14
+    // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 14
   }
 
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 18
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 18
   // PGOUSE: br {{.*}} !prof ![[JM8:[0-9]+]]
   for (i = 0; i < 10; ++i) {
     goto withinloop;
     // never reached -> no weights
     if (i) {}
-  // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 20
+  // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 20
   withinloop:
-    // PGOGEN: store {{.*}} @[[JMC]], i64 0, i64 21
+    // PGOGEN: atomicrmw add {{.*}} @[[JMC]], i64 0, i64 21
     // PGOUSE: br {{.*}} !prof ![[JM9:[0-9]+]]
     if (i) {}
   }
 
-  // PGOGEN-NOT: store {{.*}} @[[JMC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[JMC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @switches()
 // PGOUSE-LABEL: @switches()
-// PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 0
 void switches() {
   static int weights[] = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5};
 
   // No cases -> no weights
   switch (weights[0]) {
-  // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 2
   default:
     break;
   }
-  // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 1
 
-  // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 3
+  // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 3
   // PGOUSE: br {{.*}} !prof ![[SW1:[0-9]+]]
   for (int i = 0, len = sizeof(weights) / sizeof(weights[0]); i < len; ++i) {
     // PGOUSE: switch {{.*}} [
     // PGOUSE: ], !prof ![[SW2:[0-9]+]]
     switch (i[weights]) {
-    // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 5
+    // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 5
     case 1:
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 6
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 6
       // PGOUSE: br {{.*}} !prof ![[SW3:[0-9]+]]
       if (i) {}
       // fallthrough
-    // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 7
+    // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 7
     case 2:
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 8
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 8
       // PGOUSE: br {{.*}} !prof ![[SW4:[0-9]+]]
       if (i) {}
       break;
-    // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 9
+    // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 9
     case 3:
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 10
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 10
       // PGOUSE: br {{.*}} !prof ![[SW5:[0-9]+]]
       if (i) {}
       continue;
-    // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 11
+    // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 11
     case 4:
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 12
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 12
       // PGOUSE: br {{.*}} !prof ![[SW6:[0-9]+]]
       if (i) {}
       // PGOUSE: switch {{.*}} [
       // PGOUSE: ], !prof ![[SW7:[0-9]+]]
       switch (i) {
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 14
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 14
       case 6 ... 9:
-        // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 15
+        // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 15
         // PGOUSE: br {{.*}} !prof ![[SW8:[0-9]+]]
         if (i) {}
         continue;
       }
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 13
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 13
 
-    // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 16
+    // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 16
     default:
-      // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 17
+      // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 17
       // PGOUSE: br {{.*}} !prof ![[SW9:[0-9]+]]
       if (i == len - 1)
         return;
     }
-    // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 4
+    // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 4
   }
 
-  // PGOGEN: store {{.*}} @[[SWC]], i64 0, i64 18
+  // PGOGEN: atomicrmw add {{.*}} @[[SWC]], i64 0, i64 18
   // Never reached -> no weights
   if (weights[0]) {}
 
-  // PGOGEN-NOT: store {{.*}} @[[SWC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[SWC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @big_switch()
 // PGOUSE-LABEL: @big_switch()
-// PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 0
 void big_switch() {
-  // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[BS1:[0-9]+]]
   for (int i = 0; i < 32; ++i) {
     // PGOUSE: switch {{.*}} [
     // PGOUSE: ], !prof ![[BS2:[0-9]+]]
     switch (1 << i) {
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 3
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 3
     case (1 << 0):
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 4
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 4
       // PGOUSE: br {{.*}} !prof ![[BS3:[0-9]+]]
       if (i) {}
       // fallthrough
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 5
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 5
     case (1 << 1):
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 6
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 6
       // PGOUSE: br {{.*}} !prof ![[BS4:[0-9]+]]
       if (i) {}
       break;
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 7
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 7
     case (1 << 2) ... (1 << 12):
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 8
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 8
       // PGOUSE: br {{.*}} !prof ![[BS5:[0-9]+]]
       if (i) {}
       break;
     // The branch for the large case range above appears after the case body
     // PGOUSE: br {{.*}} !prof ![[BS6:[0-9]+]]
 
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 9
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 9
     case (1 << 13):
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 10
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 10
       // PGOUSE: br {{.*}} !prof ![[BS7:[0-9]+]]
       if (i) {}
       break;
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 11
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 11
     case (1 << 14) ... (1 << 28):
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 12
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 12
       // PGOUSE: br {{.*}} !prof ![[BS8:[0-9]+]]
       if (i) {}
       break;
     // The branch for the large case range above appears after the case body
     // PGOUSE: br {{.*}} !prof ![[BS9:[0-9]+]]
 
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 13
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 13
     case (1 << 29) ... ((1 << 29) + 1):
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 14
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 14
       // PGOUSE: br {{.*}} !prof ![[BS10:[0-9]+]]
       if (i) {}
       break;
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 15
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 15
     default:
-      // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 16
+      // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 16
       // PGOUSE: br {{.*}} !prof ![[BS11:[0-9]+]]
       if (i) {}
       break;
     }
-    // PGOGEN: store {{.*}} @[[BSC]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[BSC]], i64 0, i64 2
   }
 
-  // PGOGEN-NOT: store {{.*}} @[[BSC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[BSC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
   // PGOUSE: ret void
 }
 
 // PGOGEN-LABEL: @boolean_operators()
 // PGOUSE-LABEL: @boolean_operators()
-// PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 0
 void boolean_operators() {
   int v;
-  // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[BO1:[0-9]+]]
   for (int i = 0; i < 100; ++i) {
-    // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 2
     // PGOUSE: br {{.*}} !prof ![[BO2:[0-9]+]]
     v = i % 3 || i;
 
-    // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 3
+    // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 3
     // PGOUSE: br {{.*}} !prof ![[BO3:[0-9]+]]
     v = i % 3 && i;
 
-    // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 5
-    // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 4
+    // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 5
+    // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 4
     // PGOUSE: br {{.*}} !prof ![[BO4:[0-9]+]]
     // PGOUSE: br {{.*}} !prof ![[BO5:[0-9]+]]
     v = i % 3 || i % 2 || i;
 
-    // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 7
-    // PGOGEN: store {{.*}} @[[BOC]], i64 0, i64 6
+    // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 7
+    // PGOGEN: atomicrmw add {{.*}} @[[BOC]], i64 0, i64 6
     // PGOUSE: br {{.*}} !prof ![[BO6:[0-9]+]]
     // PGOUSE: br {{.*}} !prof ![[BO7:[0-9]+]]
     v = i % 2 && i % 3 && i;
   }
 
-  // PGOGEN-NOT: store {{.*}} @[[BOC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[BOC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @boolop_loops()
 // PGOUSE-LABEL: @boolop_loops()
-// PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 0
 void boolop_loops() {
   int i = 100;
 
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 2
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[BL1:[0-9]+]]
   // PGOUSE: br {{.*}} !prof ![[BL2:[0-9]+]]
   while (i && i > 50)
     i--;
 
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 4
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 3
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 4
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 3
   // PGOUSE: br {{.*}} !prof ![[BL3:[0-9]+]]
   // PGOUSE: br {{.*}} !prof ![[BL4:[0-9]+]]
   while ((i % 2) || (i > 0))
     i--;
 
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 6
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 5
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 6
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 5
   // PGOUSE: br {{.*}} !prof ![[BL5:[0-9]+]]
   // PGOUSE: br {{.*}} !prof ![[BL6:[0-9]+]]
   for (i = 100; i && i > 50; --i);
 
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 8
-  // PGOGEN: store {{.*}} @[[BLC]], i64 0, i64 7
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 8
+  // PGOGEN: atomicrmw add {{.*}} @[[BLC]], i64 0, i64 7
   // PGOUSE: br {{.*}} !prof ![[BL7:[0-9]+]]
   // PGOUSE: br {{.*}} !prof ![[BL8:[0-9]+]]
   for (; (i % 2) || (i > 0); --i);
 
-  // PGOGEN-NOT: store {{.*}} @[[BLC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[BLC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @conditional_operator()
 // PGOUSE-LABEL: @conditional_operator()
-// PGOGEN: store {{.*}} @[[COC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[COC]], i64 0, i64 0
 void conditional_operator() {
   int i = 100;
 
-  // PGOGEN: store {{.*}} @[[COC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[COC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[CO1:[0-9]+]]
   int j = i < 50 ? i : 1;
 
-  // PGOGEN: store {{.*}} @[[COC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[COC]], i64 0, i64 2
   // PGOUSE: br {{.*}} !prof ![[CO2:[0-9]+]]
   int k = i ?: 0;
 
-  // PGOGEN-NOT: store {{.*}} @[[COC]],
+  // PGOGEN-NOT: atomicrmw add {{.*}} @[[COC]],
   // PGOUSE-NOT: br {{.*}} !prof ![0-9]+
 }
 
 // PGOGEN-LABEL: @do_fallthrough()
 // PGOUSE-LABEL: @do_fallthrough()
-// PGOGEN: store {{.*}} @[[DFC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[DFC]], i64 0, i64 0
 void do_fallthrough() {
-  // PGOGEN: store {{.*}} @[[DFC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[DFC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[DF1:[0-9]+]]
   for (int i = 0; i < 10; ++i) {
     int j = 0;
-    // PGOGEN: store {{.*}} @[[DFC]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[DFC]], i64 0, i64 2
     do {
       // The number of exits out of this do-loop via the break statement
       // exceeds the counter value for the loop (which does not include the
       // fallthrough count). Make sure that does not violate any assertions.
-      // PGOGEN: store {{.*}} @[[DFC]], i64 0, i64 3
+      // PGOGEN: atomicrmw add {{.*}} @[[DFC]], i64 0, i64 3
       // PGOUSE: br {{.*}} !prof ![[DF3:[0-9]+]]
       if (i < 8) break;
       j++;
@@ -461,9 +461,9 @@
 
 // PGOGEN-LABEL: @static_func()
 // PGOUSE-LABEL: @static_func()
-// PGOGEN: store {{.*}} @[[STC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[STC]], i64 0, i64 0
 static void static_func() {
-  // PGOGEN: store {{.*}} @[[STC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[STC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[ST1:[0-9]+]]
   for (int i = 0; i < 10; ++i) {
   }
Index: test/Profile/c-captured.c
===================================================================
--- test/Profile/c-captured.c
+++ test/Profile/c-captured.c
@@ -8,37 +8,37 @@
 // PGOGEN: @[[C1C:"__llvm_profile_counters_c-captured.c:__captured_stmt.1"]] = private global [3 x i64] zeroinitializer
 
 // PGOALL-LABEL: define void @debug_captured()
-// PGOGEN: store {{.*}} @[[DCC]], i64 0, i64 0
+// PGOGEN: atomicrmw add {{.*}} @[[DCC]], i64 0, i64 0
 void debug_captured() {
   int x = 10;
 
   // Check both debug_captured counters, so we can do this all in one pass
-  // PGOGEN: store {{.*}} @[[DCC]], i64 0, i64 1
+  // PGOGEN: atomicrmw add {{.*}} @[[DCC]], i64 0, i64 1
   // PGOUSE: br {{.*}} !prof ![[DC1:[0-9]+]]
-  // PGOGEN: store {{.*}} @[[DCC]], i64 0, i64 2
+  // PGOGEN: atomicrmw add {{.*}} @[[DCC]], i64 0, i64 2
   // PGOUSE: br {{.*}} !prof ![[DC2:[0-9]+]]
   // PGOALL: ret
 
   // PGOALL-LABEL: define internal void @__captured_stmt(
-  // PGOGEN: store {{.*}} @[[CSC]], i64 0, i64 0
+  // PGOGEN: atomicrmw add {{.*}} @[[CSC]], i64 0, i64 0
   #pragma clang __debug captured
   {
-    // PGOGEN: store {{.*}} @[[CSC]], i64 0, i64 1
+    // PGOGEN: atomicrmw add {{.*}} @[[CSC]], i64 0, i64 1
     // PGOUSE: br {{.*}} !prof ![[CS1:[0-9]+]]
     if (x) {}
     // PGOALL: ret
   }
 
   if (x) {} // This is DC1. Checked above.
 
   // PGOALL-LABEL: define internal void @__captured_stmt.1(
-  // PGOGEN: store {{.*}} @[[C1C]], i64 0, i64 0
+  // PGOGEN: atomicrmw add {{.*}} @[[C1C]], i64 0, i64 0
   #pragma clang __debug captured
   {
-    // PGOGEN: store {{.*}} @[[C1C]], i64 0, i64 1
+    // PGOGEN: atomicrmw add {{.*}} @[[C1C]], i64 0, i64 1
     // PGOUSE: br {{.*}} !prof ![[C11:[0-9]+]]
     for (int i = 0; i < x; ++i) {}
-    // PGOGEN: store {{.*}} @[[C1C]], i64 0, i64 2
+    // PGOGEN: atomicrmw add {{.*}} @[[C1C]], i64 0, i64 2
     // PGOUSE: br {{.*}} !prof ![[C12:[0-9]+]]
     if (x) {}
     // PGOALL: ret
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to