[Sema] Remove some conditions of a failing assert
authorErik Pilkington <erik.pilkington@gmail.com>
Wed, 5 Dec 2018 00:43:11 +0000 (00:43 +0000)
committerErik Pilkington <erik.pilkington@gmail.com>
Wed, 5 Dec 2018 00:43:11 +0000 (00:43 +0000)
We should have been checking that this state is consistent, but its
possible for it to be filled later, so it isn't really sound to check
it here anyways.

Fixes llvm.org/PR39742

llvm-svn: 348325

clang/lib/AST/DeclTemplate.cpp
clang/test/SemaCXX/friend-template-redecl.cpp

index de1b710..04e1803 100644 (file)
@@ -329,8 +329,6 @@ void FunctionTemplateDecl::mergePrevDecl(FunctionTemplateDecl *Prev) {
 
   // Ensure we don't leak any important state.
   assert(ThisCommon->Specializations.size() == 0 &&
-         !ThisCommon->InstantiatedFromMember.getPointer() &&
-         !ThisCommon->InstantiatedFromMember.getInt() &&
          "Can't merge incompatible declarations!");
 
   Base::Common = PrevCommon;
index 3e05964..308cfcf 100644 (file)
@@ -18,3 +18,14 @@ void f() {
   foo(x);
   bar(x);
 }
+
+namespace PR39742 {
+template<typename>
+struct wrapper {
+  template<typename>
+  friend void friend_function_template() {}
+};
+
+wrapper<bool> x;
+wrapper<int> y;
+}