aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/ASTContext.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-04-15 18:47:22 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-04-15 18:47:22 +0000
commit77670f17ae3a5c3188149c19a7e386c01d0aa7c0 (patch)
tree63a989619863e0ff50192279a22ea1a2b42610a8 /lib/AST/ASTContext.cpp
parent1f35ec3c2c5662644c07969a1b5c5ad748764285 (diff)
Revert "Speed-up ObjCMethodDecl::getOverriddenMethods()."
This reverts commit r179436. Due to caching, it was possible that we could miss overridden methods that were introduced by categories later on. Along with reverting the commit I also included a test case that would have caught this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179547 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/ASTContext.cpp')
-rw-r--r--lib/AST/ASTContext.cpp37
1 files changed, 2 insertions, 35 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 8ede90dede..170cc0298b 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -1127,8 +1127,8 @@ void ASTContext::getOverriddenMethods(
assert(D);
if (const CXXMethodDecl *CXXMethod = dyn_cast<CXXMethodDecl>(D)) {
- Overridden.append(overridden_methods_begin(CXXMethod),
- overridden_methods_end(CXXMethod));
+ Overridden.append(CXXMethod->begin_overridden_methods(),
+ CXXMethod->end_overridden_methods());
return;
}
@@ -1141,39 +1141,6 @@ void ASTContext::getOverriddenMethods(
Overridden.append(OverDecls.begin(), OverDecls.end());
}
-void ASTContext::getBaseObjCCategoriesAfterInterface(
- const ObjCInterfaceDecl *D,
- SmallVectorImpl<const ObjCCategoryDecl *> &Cats) const {
- if (!D)
- return;
-
- typedef llvm::SmallVector<const ObjCCategoryDecl *, 2> VecTy;
- typedef llvm::DenseMap<const ObjCInterfaceDecl *, VecTy> MapTy;
-
- std::pair<MapTy::iterator, bool>
- InsertOp = CatsAfterInterface.insert(std::make_pair(D, VecTy()));
- VecTy &Vec = InsertOp.first->second;
- if (!InsertOp.second) {
- // already in map.
- Cats.append(Vec.begin(), Vec.end());
- return;
- }
-
- SourceLocation Loc = D->getLocation();
- for (const ObjCInterfaceDecl *
- Class = D->getSuperClass(); Class; Class = Class->getSuperClass()) {
- for (ObjCInterfaceDecl::known_categories_iterator
- CatI = Class->known_categories_begin(),
- CatEnd = Class->known_categories_end();
- CatI != CatEnd; ++CatI) {
- if (SourceMgr.isBeforeInTranslationUnit(Loc, CatI->getLocation()))
- Vec.push_back(*CatI);
- }
- }
-
- Cats.append(Vec.begin(), Vec.end());
-}
-
void ASTContext::addedLocalImportDecl(ImportDecl *Import) {
assert(!Import->NextLocalImport && "Import declaration already in the chain");
assert(!Import->isFromASTFile() && "Non-local import declaration");