write-barrier-global-assign.mm
717 Bytes
// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
// rdar://8761767
@class CPDestUser;
CPDestUser* FUNC();
// CHECK: {{call.* @objc_assign_global}}
CPDestUser* globalUser = FUNC();
// CHECK: {{call.* @objc_assign_weak}}
__weak CPDestUser* weakUser = FUNC();
// CHECK: {{call.* @objc_assign_global}}
static CPDestUser* staticUser = FUNC();
CPDestUser* GetDestUser()
{
// CHECK: {{call.* @objc_assign_global}}
static CPDestUser* gUser = FUNC();
// CHECK: {{call.* @objc_assign_weak}}
static __weak CPDestUser* wUser = FUNC();
if (wUser)
return wUser;
if (staticUser)
return staticUser;
return gUser;
}