forked from OSchip/llvm-project
Patch to generate meta-data for prtocol used
in @protocol expression. llvm-svn: 68806
This commit is contained in:
parent
8b723e299c
commit
464423dce4
|
@ -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_$_");
|
||||
|
|
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue