c++: Don't add enums to class's decl_list
authorNathan Sidwell <nathan@acm.org>
Wed, 22 Jul 2020 15:38:58 +0000 (08:38 -0700)
committerNathan Sidwell <nathan@acm.org>
Wed, 22 Jul 2020 15:43:26 +0000 (08:43 -0700)
We don't need to add CONST_DECLs to a template decl's decl list.  Also made the
code flow a bit clearer.

gcc/cp/
* class.c (maybe_add_class_template_decl_list): Don't add CONST_DECLs.

gcc/cp/class.c

index 803b33bf346a6476c5e3311c31b66c740d674c2b..a3913f4ce0b540a54bee8db07c891c155910ca0b 100644 (file)
@@ -3049,11 +3049,14 @@ finish_struct_anon (tree t)
 void
 maybe_add_class_template_decl_list (tree type, tree t, int friend_p)
 {
-  /* Save some memory by not creating TREE_LIST if TYPE is not template.  */
-  if (CLASSTYPE_TEMPLATE_INFO (type))
-    CLASSTYPE_DECL_LIST (type)
-      = tree_cons (friend_p ? NULL_TREE : type,
-                  t, CLASSTYPE_DECL_LIST (type));
+  if (CLASSTYPE_TEMPLATE_INFO (type)
+      && TREE_CODE (t) != CONST_DECL)
+    {
+      tree purpose = friend_p ? NULL_TREE : type;
+
+      CLASSTYPE_DECL_LIST (type)
+       = tree_cons (purpose, t, CLASSTYPE_DECL_LIST (type));
+    }
 }
 
 /* This function is called from declare_virt_assop_and_dtor via