[cfe-commits] r103965 - in /cfe/trunk: lib/CodeGen/CGObjC.cpp test/CodeGenObjC/protocols.m
John McCall
rjmccall at apple.com
Mon May 17 13:12:43 PDT 2010
Author: rjmccall
Date: Mon May 17 15:12:43 2010
New Revision: 103965
URL: http://llvm.org/viewvc/llvm-project?rev=103965&view=rev
Log:
Correctly generate IR for ObjC messages sends to protocol-qualified types.
Fixes rdar://problem/7992749
Modified:
cfe/trunk/lib/CodeGen/CGObjC.cpp
cfe/trunk/test/CodeGenObjC/protocols.m
Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=103965&r1=103964&r2=103965&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp Mon May 17 15:12:43 2010
@@ -64,10 +64,11 @@
break;
case ObjCMessageExpr::Class: {
- const ObjCInterfaceType *IFace
- = E->getClassReceiver()->getAs<ObjCInterfaceType>();
- assert(IFace && "Invalid Objective-C class message send");
- OID = IFace->getDecl();
+ const ObjCObjectType *ObjTy
+ = E->getClassReceiver()->getAs<ObjCObjectType>();
+ assert(ObjTy && "Invalid Objective-C class message send");
+ OID = ObjTy->getInterface();
+ assert(OID && "Invalid Objective-C class message send");
Receiver = Runtime.GetClass(Builder, OID);
isClassMessage = true;
break;
Modified: cfe/trunk/test/CodeGenObjC/protocols.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/protocols.m?rev=103965&r1=103964&r2=103965&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenObjC/protocols.m (original)
+++ cfe/trunk/test/CodeGenObjC/protocols.m Mon May 17 15:12:43 2010
@@ -1,8 +1,9 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
+// RUN: %clang_cc1 -emit-llvm-only %s
void p(const char*, ...);
@interface Root
++(int) maxValue;
-(int) conformsTo: (id) x;
@end
@@ -48,3 +49,9 @@
return 0;
}
+
+// rdar://problem/7992749
+typedef Root<P1> P1Object;
+int test10() {
+ return [P1Object maxValue];
+}
More information about the cfe-commits
mailing list