xref: /aosp_15_r20/external/clang/test/CodeGenCXX/atomic.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li namespace PR11411 {
4*67e74705SXin Li   template<typename _Tp> struct Ptr {
5*67e74705SXin Li     void f();
6*67e74705SXin Li   };
7*67e74705SXin Li 
8*67e74705SXin Li   // CHECK-LABEL: define linkonce_odr void @_ZN7PR114113PtrIiE1fEv
9*67e74705SXin Li   // CHECK-NOT: ret
f()10*67e74705SXin Li   template<typename _Tp> inline void Ptr<_Tp>::f() {
11*67e74705SXin Li     int* _refcount;
12*67e74705SXin Li     // CHECK: atomicrmw add i32*
13*67e74705SXin Li     __sync_fetch_and_add(_refcount, 1);
14*67e74705SXin Li     // CHECK-NEXT: ret void
15*67e74705SXin Li   }
f(Ptr<int> * a)16*67e74705SXin Li   void f(Ptr<int> *a) { a->f(); }
17*67e74705SXin Li }
18