diff options
Diffstat (limited to 'lib/Sema/SemaAttr.cpp')
-rw-r--r-- | lib/Sema/SemaAttr.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Sema/SemaAttr.cpp b/lib/Sema/SemaAttr.cpp index 4406f2d956..3bfb8f22b4 100644 --- a/lib/Sema/SemaAttr.cpp +++ b/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)); } |