// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -O2 -disable-llvm-passes -o - %s | FileCheck %s
id ;
void ;
// Lifetime extension for binding a reference to an rvalue
// CHECK-LABEL: define{{.*}} void @_Z5test0v()
void
// No lifetime extension when we're binding a reference to an lvalue.
// CHECK-LABEL: define{{.*}} void @_Z5test1RU8__strongP11objc_objectRU6__weakS0_
void
typedef __strong id strong_id;
//CHECK: define{{.*}} void @_Z5test3v
void
// CHECK-LABEL: define{{.*}} void @_Z5test4RU8__strongP11objc_object
void
void ;
// CHECK-LABEL: define{{.*}} void @_Z5test5RU8__strongP11objc_object
void
// CHECK-LABEL: define internal void @__cxx_global_var_init(
// CHECK: call noundef i8* @_Z9getObjectv{{.*}} [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ]
// CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(
const __strong id &global_ref = ;
// Note: we intentionally don't release the object.