diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-04-22 08:22:17 +0000 | 
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-22 08:22:17 +0000 | 
| commit | 725dc2c5bb5294d836b4786288e8c6be78b234ed (patch) | |
| tree | fa7bb3f144c94695424c5354d26aa9aaaf05e84e | |
| parent | 89623deca10793927d85c2548ead5e3509b69b65 (diff) | |
| download | bcm5719-llvm-725dc2c5bb5294d836b4786288e8c6be78b234ed.tar.gz bcm5719-llvm-725dc2c5bb5294d836b4786288e8c6be78b234ed.zip  | |
Emit meta data using the Ivar, not a looked up FieldDecl.
llvm-svn: 69790
| -rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 14 | 
1 files changed, 6 insertions, 8 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index 7d1cea7e0e0..dc66fa46b13 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -2089,9 +2089,8 @@ llvm::Constant *CGObjCMac::EmitIvarList(const ObjCImplementationDecl *ID,    for (unsigned i = 0, e = OIvars.size(); i != e; ++i) {      ObjCIvarDecl *IVD = OIvars[i]; -    const FieldDecl *Field = OID->lookupFieldDeclForIvar(CGM.getContext(), IVD); -    Ivar[0] = GetMethodVarName(Field->getIdentifier()); -    Ivar[1] = GetMethodVarType(Field); +    Ivar[0] = GetMethodVarName(IVD->getIdentifier()); +    Ivar[1] = GetMethodVarType(IVD);      Ivar[2] = llvm::ConstantInt::get(ObjCTypes.IntTy,                                        ComputeIvarBaseOffset(CGM, OID, IVD));      Ivars.push_back(llvm::ConstantStruct::get(ObjCTypes.IvarTy, Ivar)); @@ -4648,16 +4647,15 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(    for (unsigned i = 0, e = OIvars.size(); i != e; ++i) {      ObjCIvarDecl *IVD = OIvars[i]; -    const FieldDecl *Field = OID->lookupFieldDeclForIvar(CGM.getContext(), IVD);      Ivar[0] = EmitIvarOffsetVar(ID->getClassInterface(), IVD,                                   ComputeIvarBaseOffset(CGM, OID, IVD)); -    Ivar[1] = GetMethodVarName(Field->getIdentifier()); -    Ivar[2] = GetMethodVarType(Field); +    Ivar[1] = GetMethodVarName(IVD->getIdentifier()); +    Ivar[2] = GetMethodVarType(IVD);      const llvm::Type *FieldTy = -      CGM.getTypes().ConvertTypeForMem(Field->getType()); +      CGM.getTypes().ConvertTypeForMem(IVD->getType());      unsigned Size = CGM.getTargetData().getTypePaddedSize(FieldTy);      unsigned Align = CGM.getContext().getPreferredTypeAlign( -                       Field->getType().getTypePtr()) >> 3; +                       IVD->getType().getTypePtr()) >> 3;      Align = llvm::Log2_32(Align);      Ivar[3] = llvm::ConstantInt::get(ObjCTypes.IntTy, Align);      // NOTE. Size of a bitfield does not match gcc's, because of the  | 

