De-virtualize Decl::isOutOfLine().
llvm-svn: 125730
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index e16bd22..a95ea3f 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -172,6 +172,15 @@
// Out-of-line virtual method providing a home for Decl.
Decl::~Decl() { }
+bool Decl::isOutOfLine() const {
+ if (const VarDecl *VD = dyn_cast<VarDecl>(this))
+ return VD->isOutOfLine();
+ if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(this))
+ return FD->isOutOfLine();
+
+ return getLexicalDeclContext() != getDeclContext();
+}
+
void Decl::setDeclContext(DeclContext *DC) {
if (isOutOfSemaDC())
delete getMultipleDC();