aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/decl.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@gcc.gnu.org>2017-06-16 14:33:45 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2017-06-16 14:33:45 +0000
commit6a2dfd9a66a678b26c762d0fc614fea267ea706b (patch)
tree71512245eb8338397e64115e91116c5af543c327 /gcc/cp/decl.c
parent8c1ca7ee3a35bf00201c6a82ccd5b663575328a7 (diff)
downloadgcc-6a2dfd9a66a678b26c762d0fc614fea267ea706b.zip
gcc-6a2dfd9a66a678b26c762d0fc614fea267ea706b.tar.gz
gcc-6a2dfd9a66a678b26c762d0fc614fea267ea706b.tar.bz2
Make keyed_classes a vector.
* cp-tree.h (CPTI_KEYED_CLASSES, keyed_classes): Delete. (keyed_classes): Declare as vector. * decl.c (keyed_classes): Define. (cxx_init_decl_processing): Allocate it. (record_key_method_defined): Use vec_safe_push. * class.c (finish_struct_1): Likewise. * pt.c (instantiate_class_template_1): Likewise. * decl2.c (c_parse_final_cleanups): Reverse iterate keyed_classes. From-SVN: r249263
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r--gcc/cp/decl.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 3711476..04418a1 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -160,6 +160,9 @@ tree integer_two_node;
/* vector of static decls. */
vec<tree, va_gc> *static_decls;
+/* vector of keyed classes. */
+vec<tree, va_gc> *keyed_classes;
+
/* Used only for jumps to as-yet undefined labels, since jumps to
defined labels can have their validity checked immediately. */
@@ -4064,6 +4067,9 @@ cxx_init_decl_processing (void)
/* Guess at the initial static decls size. */
vec_alloc (static_decls, 500);
+ /* ... and keyed classes. */
+ vec_alloc (keyed_classes, 100);
+
record_builtin_type (RID_BOOL, "bool", boolean_type_node);
truthvalue_type_node = boolean_type_node;
truthvalue_false_node = boolean_false_node;
@@ -15438,7 +15444,7 @@ record_key_method_defined (tree fndecl)
{
tree fnclass = DECL_CONTEXT (fndecl);
if (fndecl == CLASSTYPE_KEY_METHOD (fnclass))
- keyed_classes = tree_cons (NULL_TREE, fnclass, keyed_classes);
+ vec_safe_push (keyed_classes, fnclass);
}
}