diff options
author | Nathan Sidwell <nathan@gcc.gnu.org> | 2017-06-16 14:33:45 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2017-06-16 14:33:45 +0000 |
commit | 6a2dfd9a66a678b26c762d0fc614fea267ea706b (patch) | |
tree | 71512245eb8338397e64115e91116c5af543c327 /gcc/cp/decl.c | |
parent | 8c1ca7ee3a35bf00201c6a82ccd5b663575328a7 (diff) | |
download | gcc-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.c | 8 |
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); } } |