"This patch fixes message sends to super in class methods for the GNU runtime (currently an instance method lookup is being performed)."

Patch by David Chisnall!

llvm-svn: 69493
This commit is contained in:
Chris Lattner 2009-04-18 23:12:40 +00:00
parent 19bd27f493
commit c1b96c3590

View File

@ -299,8 +299,9 @@ CGObjCGNU::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
const ObjCInterfaceDecl *SuperClass = Class->getSuperClass();
// TODO: This should be cached, not looked up every time.
llvm::Value *ReceiverClass = GetClass(CGF.Builder, SuperClass);
if (IsClassMessage)
ReceiverClass = CGF.Builder.CreateBitCast(CGF.Builder.CreateLoad(
CGF.Builder.CreateStructGEP(ReceiverClass, 0)), IdTy);
// Construct the structure used to look up the IMP
llvm::StructType *ObjCSuperTy = llvm::StructType::get(Receiver->getType(),
IdTy, NULL);