Patch to generate meta-data for prtocol used

in @protocol expression.

llvm-svn: 68806
This commit is contained in:
Fariborz Jahanian 2009-04-10 18:47:34 +00:00
parent 8b723e299c
commit 464423dce4
2 changed files with 23 additions and 1 deletions

View File

@ -4327,7 +4327,10 @@ void CGObjCNonFragileABIMac::GenerateClass(const ObjCImplementationDecl *ID) {
llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CGBuilderTy &Builder,
const ObjCProtocolDecl *PD) {
llvm::Constant *Init = llvm::ConstantExpr::getBitCast(GetProtocolRef(PD),
// This routine is called for @protocol only. So, we must build definition
// of protocol's meta-data (not a reference to it!)
//
llvm::Constant *Init = llvm::ConstantExpr::getBitCast(GetOrEmitProtocol(PD),
ObjCTypes.ExternalProtocolPtrTy);
std::string ProtocolName("\01l_OBJC_PROTOCOL_REFERENCE_$_");

View File

@ -0,0 +1,19 @@
// RUN: clang-cc -triple x86_64-apple-darwin10 -S -o - %s | grep -e "private_extern l_OBJC_PROTOCOL_" | count 2
@interface FOO @end
@interface NSObject @end
@protocol SSHIPCProtocolHandler_BDC;
typedef NSObject<SSHIPCProtocolHandler_BDC> _SSHIPCProtocolHandler_BDC;
@interface SSHIPC_v2_RPFSProxy
@property(nonatomic,readonly,retain) _SSHIPCProtocolHandler_BDC* protocolHandler_BDC;
@end
@implementation FOO
- (_SSHIPCProtocolHandler_BDC*) protocolHandler_BDC {@protocol(SSHIPCProtocolHandler_BDC); }
@end