diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2008-12-13 22:20:28 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2008-12-13 22:20:28 +0000 |
commit | b1378f9b0fdc65714985d50a9b0c24537afd713a (patch) | |
tree | a3124bc6221eeae6b6a40c524253c09c588ce13f /clang/lib/AST/DeclObjC.cpp | |
parent | b5670fd5555f5349128ecd54ad5d4c7bb6f72f60 (diff) | |
download | bcm5719-llvm-b1378f9b0fdc65714985d50a9b0c24537afd713a.tar.gz bcm5719-llvm-b1378f9b0fdc65714985d50a9b0c24537afd713a.zip |
Patch for ObjCIvarRefExpr containing the field
matching the storage layout for this ivar
llvm-svn: 60996
Diffstat (limited to 'clang/lib/AST/DeclObjC.cpp')
-rw-r--r-- | clang/lib/AST/DeclObjC.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index e3e4548f644..f22b5b435b0 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -363,7 +363,21 @@ void ObjCInterfaceDecl::addInstanceVariablesToClass(ObjCIvarDecl **ivars, setLocEnd(RBrac); } -/// addInstanceVariablesToClass - produces layout info. for the class for its +/// lookupFieldDeclForIvar - looks up a field decl' in the laid out +/// storage which matches this 'ivar'. +/// +FieldDecl *ObjCInterfaceDecl::lookupFieldDeclForIvar(ASTContext &Context, + ObjCIvarDecl *ivar) { + assert(RecordForDecl && "lookupFieldDeclForIvar no storage for class"); + DeclarationName Member = ivar->getDeclName(); + DeclContext::lookup_result Lookup = RecordForDecl->lookup(Context, Member); + assert((Lookup.first != Lookup.second) && "field decl not found"); + FieldDecl *MemberDecl = dyn_cast<FieldDecl>(*Lookup.first); + assert(MemberDecl && "field decl not found"); + return MemberDecl; +} + +/// addLayoutToClass - produces layout info. for the class for its /// ivars and all those inherited. /// void ObjCInterfaceDecl::addLayoutToClass(ASTContext &Context) |