summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclObjC.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2008-12-13 22:20:28 +0000
committerFariborz Jahanian <fjahanian@apple.com>2008-12-13 22:20:28 +0000
commitb1378f9b0fdc65714985d50a9b0c24537afd713a (patch)
treea3124bc6221eeae6b6a40c524253c09c588ce13f /clang/lib/AST/DeclObjC.cpp
parentb5670fd5555f5349128ecd54ad5d4c7bb6f72f60 (diff)
downloadbcm5719-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.cpp16
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)
OpenPOWER on IntegriCloud