diff options
Diffstat (limited to 'lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r-- | lib/AST/RecordLayoutBuilder.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index c914f3f82e8e0..cfd89eaed3507 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -719,11 +719,6 @@ ASTRecordLayoutBuilder::ComputeKeyFunction(const CXXRecordDecl *RD) { // If a class isnt' polymorphic it doesn't have a key function. if (!RD->isPolymorphic()) return 0; - - // A class template specialization or instantation does not have a key - // function. - if (RD->getTemplateSpecializationKind() != TSK_Undeclared) - return 0; // A class inside an anonymous namespace doesn't have a key function. (Or // at least, there's no point to assigning a key function to such a class; @@ -741,13 +736,13 @@ ASTRecordLayoutBuilder::ComputeKeyFunction(const CXXRecordDecl *RD) { if (MD->isPure()) continue; - if (MD->isInlineSpecified()) - continue; - // Ignore implicit member functions, they are always marked as inline, but // they don't have a body until they're defined. if (MD->isImplicit()) continue; + + if (MD->isInlineSpecified()) + continue; if (MD->hasInlineBody()) continue; |