aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2025-01-19 05:15:01 -0500
committerJason Merrill <jason@redhat.com>2025-04-17 13:20:39 -0400
commit53d4e355db18fec21515d055924df8290ef5ce14 (patch)
tree8befbd3e48fafb3597858e79821ba0ffe0c95248 /gcc
parent20e31f507a2dd6cbd40cc65a7c06d07bfaa2a5e1 (diff)
downloadgcc-53d4e355db18fec21515d055924df8290ef5ce14.zip
gcc-53d4e355db18fec21515d055924df8290ef5ce14.tar.gz
gcc-53d4e355db18fec21515d055924df8290ef5ce14.tar.bz2
c++: vec_safe_reserve usage tweaks
A couple of cleanups from noticing that the semantics of std::vector<T>::reserve() (request the new minimum allocation) differ from the GCC vec<...>::reserve() (request a minimum number of slots available). In preserve_state, we were tripling the size of the vec when doubling it is more than enough. In get_tinfo_desc we were using vec_safe_reserve properly, but it's simpler to use vec_safe_grow_cleared. gcc/cp/ChangeLog: * name-lookup.cc (name_lookup::preserve_state): Fix reserve call. * rtti.cc (get_tinfo_desc): Use vec_safe_grow_cleared.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/name-lookup.cc2
-rw-r--r--gcc/cp/rtti.cc15
2 files changed, 4 insertions, 13 deletions
diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc
index 1cd982e..498126a 100644
--- a/gcc/cp/name-lookup.cc
+++ b/gcc/cp/name-lookup.cc
@@ -583,7 +583,7 @@ name_lookup::preserve_state ()
if (previous)
{
unsigned length = vec_safe_length (previous->scopes);
- vec_safe_reserve (previous->scopes, length * 2);
+ vec_safe_reserve (previous->scopes, length);
for (unsigned ix = length; ix--;)
{
tree decl = (*previous->scopes)[ix];
diff --git a/gcc/cp/rtti.cc b/gcc/cp/rtti.cc
index 3539962..18bc479 100644
--- a/gcc/cp/rtti.cc
+++ b/gcc/cp/rtti.cc
@@ -1318,18 +1318,9 @@ get_pseudo_ti_index (tree type)
static tinfo_s *
get_tinfo_desc (unsigned ix)
{
- unsigned len = tinfo_descs->length ();
-
- if (len <= ix)
- {
- /* too short, extend. */
- len = ix + 1 - len;
- vec_safe_reserve (tinfo_descs, len);
- tinfo_s elt;
- elt.type = elt.vtable = elt.name = NULL_TREE;
- while (len--)
- tinfo_descs->quick_push (elt);
- }
+ if (tinfo_descs->length () <= ix)
+ /* too short, extend. */
+ vec_safe_grow_cleared (tinfo_descs, ix + 1);
tinfo_s *res = &(*tinfo_descs)[ix];