summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaAttr.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-12-25 00:39:58 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-12-25 00:39:58 +0000
commitf92a59f0cb84d91cb34986b98c6516ed8abba6d7 (patch)
tree8268a88575c95d2e09bd867719438b068a1a6f20 /clang/lib/Sema/SemaAttr.cpp
parentfe73ac34c5a4aabd3f95f71f21257ab90ce6165c (diff)
downloadbcm5719-llvm-f92a59f0cb84d91cb34986b98c6516ed8abba6d7.tar.gz
bcm5719-llvm-f92a59f0cb84d91cb34986b98c6516ed8abba6d7.zip
Cache visibility of decls.
This unifies the linkage and visibility caching. I first implemented this when working on pr13844, but the previous fixes removed the performance advantage of this one. This is still a step in the right direction for making linkage and visibility cheap to use. llvm-svn: 171048
Diffstat (limited to 'clang/lib/Sema/SemaAttr.cpp')
-rw-r--r--clang/lib/Sema/SemaAttr.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaAttr.cpp b/clang/lib/Sema/SemaAttr.cpp
index 4406f2d956a..3bfb8f22b46 100644
--- a/clang/lib/Sema/SemaAttr.cpp
+++ b/clang/lib/Sema/SemaAttr.cpp
@@ -309,7 +309,8 @@ void Sema::AddPushedVisibilityAttribute(Decl *D) {
if (!VisContext)
return;
- if (isa<NamedDecl>(D) && cast<NamedDecl>(D)->getExplicitVisibility())
+ NamedDecl *ND = dyn_cast<NamedDecl>(D);
+ if (ND && ND->getExplicitVisibility())
return;
VisStack *Stack = static_cast<VisStack*>(VisContext);
@@ -320,6 +321,7 @@ void Sema::AddPushedVisibilityAttribute(Decl *D) {
= (VisibilityAttr::VisibilityType) rawType;
SourceLocation loc = Stack->back().second;
+ ND->ClearLVCache();
D->addAttr(::new (Context) VisibilityAttr(loc, Context, type));
}
OpenPOWER on IntegriCloud