1a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | FileCheck %s 2a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor 3a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregornamespace PR11411 { 4a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor template<typename _Tp> struct Ptr { 5a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor void f(); 6a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor }; 7a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor 893ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin // CHECK-LABEL: define linkonce_odr void @_ZN7PR114113PtrIiE1fEv 9a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor // CHECK-NOT: ret 10a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor template<typename _Tp> inline void Ptr<_Tp>::f() { 11a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor int* _refcount; 12a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor // CHECK: atomicrmw add i32* 13a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor __sync_fetch_and_add(_refcount, 1); 14a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor // CHECK-NEXT: ret void 15a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor } 16a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor void f(Ptr<int> *a) { a->f(); } 17a9766411aaaa1446a5da96dc5042de8da05d89bdDouglas Gregor} 18