types was not being generated for objc pointers.
// rdar://
8681766.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119751
91177308-0d34-0410-b5e6-
96231b3b80d8
V = Builder.CreateLoad(V, "tmp");
LValue LV = MakeAddrLValue(V, E->getType(), Alignment);
- if (NonGCable) {
+ if (NonGCable && !VD->getType()->isReferenceType()) {
LV.getQuals().removeObjCGCAttr();
LV.setNonGC(true);
}
--- /dev/null
+// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
+// rdar://8681766
+
+@interface NSArray
+- (NSArray*) retain;
+- (void) release;
+@end
+
+void NSAssignArray(NSArray*& target, NSArray* newValue)
+{
+ if (target == newValue)
+ return;
+
+ NSArray* oldValue = target;
+
+ target = [newValue retain];
+
+ [oldValue release];
+}
+// CHECK: {{call.* @objc_assign_strongCast}}