[C++ PATCH] template specializations
authorNathan Sidwell <nathan@acm.org>
Tue, 28 May 2019 17:04:12 +0000 (17:04 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Tue, 28 May 2019 17:04:12 +0000 (17:04 +0000)
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg01844.html
* decl.c (duplicate_decls): Assert a template newdecl has no
specializations.

From-SVN: r271713

gcc/cp/ChangeLog
gcc/cp/decl.c

index 36a415d..0552d91 100644 (file)
@@ -1,3 +1,8 @@
+2019-05-28  Nathan Sidwell  <nathan@acm.org>
+
+       * decl.c (duplicate_decls): Assert a template newdecl has no
+       specializations.
+
 2019-05-28  Marek Polacek  <polacek@redhat.com>
 
        PR c++/90548 - ICE with generic lambda and empty pack.
index 5b22f65..2bb50e4 100644 (file)
@@ -2025,9 +2025,10 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
       tree old_result = DECL_TEMPLATE_RESULT (olddecl);
       tree new_result = DECL_TEMPLATE_RESULT (newdecl);
       TREE_TYPE (olddecl) = TREE_TYPE (old_result);
-      DECL_TEMPLATE_SPECIALIZATIONS (olddecl)
-       = chainon (DECL_TEMPLATE_SPECIALIZATIONS (olddecl),
-                  DECL_TEMPLATE_SPECIALIZATIONS (newdecl));
+
+      /* The new decl should not already have gathered any
+        specializations.  */
+      gcc_assert (!DECL_TEMPLATE_SPECIALIZATIONS (newdecl));
 
       DECL_ATTRIBUTES (old_result)
        = (*targetm.merge_decl_attributes) (old_result, new_result);