diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-05-03 21:05:10 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-05-03 21:05:10 +0000 |
| commit | 36e2a1eea382d38d6d6eaa27576d0d41235f5c73 (patch) | |
| tree | 1c4a75b79f266b9e51d7db224be893faa6a6a8b0 /clang/lib | |
| parent | e4eeb07acd432acc40e99e659d2e90422fb4d161 (diff) | |
| download | bcm5719-llvm-36e2a1eea382d38d6d6eaa27576d0d41235f5c73.tar.gz bcm5719-llvm-36e2a1eea382d38d6d6eaa27576d0d41235f5c73.zip | |
Use the implementation decl for looking up offset while building the
ivar layout.
- The layout needs access to synthesized ivars.
llvm-svn: 70798
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index a5450ff1be5..5d4b65f4704 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -821,7 +821,7 @@ protected: void BuildAggrIvarRecordLayout(const RecordType *RT, unsigned int BytePos, bool ForStrongLayout, bool &HasUnion); - void BuildAggrIvarLayout(const ObjCInterfaceDecl *OI, + void BuildAggrIvarLayout(const ObjCImplementationDecl *OI, const llvm::StructLayout *Layout, const RecordDecl *RD, const llvm::SmallVectorImpl<FieldDecl*> &RecFields, @@ -846,7 +846,7 @@ protected: llvm::Constant *GetProtocolRef(const ObjCProtocolDecl *PD); /// GetFieldBaseOffset - return's field byte offset. - uint64_t GetFieldBaseOffset(const ObjCInterfaceDecl *OI, + uint64_t GetFieldBaseOffset(const ObjCImplementationDecl *OI, const llvm::StructLayout *Layout, const FieldDecl *Field); @@ -2229,7 +2229,7 @@ llvm::Function *CGObjCCommonMac::GenerateMethod(const ObjCMethodDecl *OMD, } /// GetFieldBaseOffset - return the field's byte offset. -uint64_t CGObjCCommonMac::GetFieldBaseOffset(const ObjCInterfaceDecl *OI, +uint64_t CGObjCCommonMac::GetFieldBaseOffset(const ObjCImplementationDecl *OI, const llvm::StructLayout *Layout, const FieldDecl *Field) { // Is this a C struct? @@ -2935,7 +2935,7 @@ void CGObjCCommonMac::BuildAggrIvarRecordLayout(const RecordType *RT, ForStrongLayout, HasUnion); } -void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCInterfaceDecl *OI, +void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCImplementationDecl *OI, const llvm::StructLayout *Layout, const RecordDecl *RD, const llvm::SmallVectorImpl<FieldDecl*> &RecFields, @@ -3109,7 +3109,7 @@ llvm::Constant *CGObjCCommonMac::BuildIvarLayout( SkipIvars.clear(); IvarsInfo.clear(); - BuildAggrIvarLayout(OI, 0, 0, RecFields, 0, ForStrongLayout, hasUnion); + BuildAggrIvarLayout(OMD, 0, 0, RecFields, 0, ForStrongLayout, hasUnion); if (IvarsInfo.empty()) return llvm::Constant::getNullValue(PtrTy); |

