diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-02-15 03:29:24 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-02-15 03:29:24 +0000 |
commit | 650e5b28d2472eb93c210b6a6275afa95ce98bdb (patch) | |
tree | 24613fd15f7e66fb016da44f4ad65a6c43925933 /clang | |
parent | 0609acc10d78428fcb9fcbf02f4310a7e550178c (diff) | |
download | bcm5719-llvm-650e5b28d2472eb93c210b6a6275afa95ce98bdb.tar.gz bcm5719-llvm-650e5b28d2472eb93c210b6a6275afa95ce98bdb.zip |
Speculatively revert r295118 to see if it's what's causing the modules selfhost buildbots to fail.
llvm-svn: 295146
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/AST/Type.cpp | 6 | ||||
-rw-r--r-- | clang/test/SemaTemplate/explicit-specialization-member.cpp | 11 |
2 files changed, 2 insertions, 15 deletions
diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 1d064b135e3..8f22a1b197a 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -3023,10 +3023,8 @@ static TagDecl *getInterestingTagDecl(TagDecl *decl) { if (I->isCompleteDefinition() || I->isBeingDefined()) return I; } - // If there's no definition (not even in progress), return the most recent - // declaration. This is important for template specializations, in order to - // pick the declaration with the most complete TemplateSpecializationKind. - return decl->getMostRecentDecl(); + // If there's no definition (not even in progress), return what we have. + return decl; } TagDecl *TagType::getDecl() const { diff --git a/clang/test/SemaTemplate/explicit-specialization-member.cpp b/clang/test/SemaTemplate/explicit-specialization-member.cpp index 4300ceb17ec..f302836c7e4 100644 --- a/clang/test/SemaTemplate/explicit-specialization-member.cpp +++ b/clang/test/SemaTemplate/explicit-specialization-member.cpp @@ -57,14 +57,3 @@ template<typename T> struct Helper { template<typename T> void Helper<T>::func<2>() {} // expected-error {{cannot specialize a member}} \ // expected-error {{no function template matches}} } - -namespace b35070233 { - template <typename T> struct Cls { - static void f() {} - }; - - void g(Cls<int>); - - template<> struct Cls<int>; // expected-note {{forward declaration}} - template<> void Cls<int>::f(); // expected-error {{incomplete type}} -} |