aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2019-10-02 15:26:47 -0400
committerJason Merrill <jason@gcc.gnu.org>2019-10-02 15:26:47 -0400
commitc89844e5d30a5235960a2c627abc9369306fda61 (patch)
tree49f593d8b44f2a0038aa8a77148c902c63381b29 /gcc/cp
parentd61bff850d13ff103de3c2fb13d5e371996e1a3c (diff)
downloadgcc-c89844e5d30a5235960a2c627abc9369306fda61.zip
gcc-c89844e5d30a5235960a2c627abc9369306fda61.tar.gz
gcc-c89844e5d30a5235960a2c627abc9369306fda61.tar.bz2
Add some hash_map_safe_* functions like vec_safe_*.
gcc/ * hash-map.h (default_hash_map_size): New variable. (create_ggc): Use it as default argument. (hash_map_maybe_create, hash_map_safe_get) (hash_map_safe_get_or_insert, hash_map_safe_put): New fns. gcc/cp/ * constexpr.c (maybe_initialize_fundef_copies_table): Remove. (get_fundef_copy): Use hash_map_safe_get_or_insert. * cp-objcp-common.c (cp_get_debug_type): Use hash_map_safe_*. * decl.c (store_decomp_type): Remove. (cp_finish_decomp): Use hash_map_safe_put. * init.c (get_nsdmi): Use hash_map_safe_*. * pt.c (store_defaulted_ttp, lookup_defaulted_ttp): Remove. (add_defaults_to_ttp): Use hash_map_safe_*. From-SVN: r276484
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog12
-rw-r--r--gcc/cp/constexpr.c14
-rw-r--r--gcc/cp/cp-objcp-common.c6
-rw-r--r--gcc/cp/decl.c9
-rw-r--r--gcc/cp/init.c9
-rw-r--r--gcc/cp/pt.c21
6 files changed, 22 insertions, 49 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index bac74fe..baf01e6 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,15 @@
+2019-09-30 Jason Merrill <jason@redhat.com>
+
+ Use hash_map_safe_* functions.
+ * constexpr.c (maybe_initialize_fundef_copies_table): Remove.
+ (get_fundef_copy): Use hash_map_safe_get_or_insert.
+ * cp-objcp-common.c (cp_get_debug_type): Use hash_map_safe_*.
+ * decl.c (store_decomp_type): Remove.
+ (cp_finish_decomp): Use hash_map_safe_put.
+ * init.c (get_nsdmi): Use hash_map_safe_*.
+ * pt.c (store_defaulted_ttp, lookup_defaulted_ttp): Remove.
+ (add_defaults_to_ttp): Use hash_map_safe_*.
+
2019-10-02 Richard Biener <rguenther@suse.de>
PR c++/91606
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index cb5484f..06672a2 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -1098,15 +1098,6 @@ maybe_initialize_constexpr_call_table (void)
static GTY(()) hash_map<tree, tree> *fundef_copies_table;
-/* Initialize FUNDEF_COPIES_TABLE if it's not initialized. */
-
-static void
-maybe_initialize_fundef_copies_table ()
-{
- if (fundef_copies_table == NULL)
- fundef_copies_table = hash_map<tree,tree>::create_ggc (101);
-}
-
/* Reuse a copy or create a new unshared copy of the function FUN.
Return this copy. We use a TREE_LIST whose PURPOSE is body, VALUE
is parms, TYPE is result. */
@@ -1114,11 +1105,10 @@ maybe_initialize_fundef_copies_table ()
static tree
get_fundef_copy (constexpr_fundef *fundef)
{
- maybe_initialize_fundef_copies_table ();
-
tree copy;
bool existed;
- tree *slot = &fundef_copies_table->get_or_insert (fundef->decl, &existed);
+ tree *slot = &(hash_map_safe_get_or_insert<hm_ggc>
+ (fundef_copies_table, fundef->decl, &existed, 127));
if (!existed)
{
diff --git a/gcc/cp/cp-objcp-common.c b/gcc/cp/cp-objcp-common.c
index 4369a5b..0a72231 100644
--- a/gcc/cp/cp-objcp-common.c
+++ b/gcc/cp/cp-objcp-common.c
@@ -145,11 +145,9 @@ cp_get_debug_type (const_tree type)
if (dtype)
{
tree ktype = CONST_CAST_TREE (type);
- if (debug_type_map == NULL)
- debug_type_map = tree_cache_map::create_ggc (512);
- else if (tree *slot = debug_type_map->get (ktype))
+ if (tree *slot = hash_map_safe_get (debug_type_map, ktype))
return *slot;
- debug_type_map->put (ktype, dtype);
+ hash_map_safe_put<hm_ggc> (debug_type_map, ktype, dtype);
}
return dtype;
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index c96294f..d6cca65 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7704,13 +7704,6 @@ get_tuple_decomp_init (tree decl, unsigned i)
based on the actual type of the variable, so store it in a hash table. */
static GTY((cache)) tree_cache_map *decomp_type_table;
-static void
-store_decomp_type (tree v, tree t)
-{
- if (!decomp_type_table)
- decomp_type_table = tree_cache_map::create_ggc (13);
- decomp_type_table->put (v, t);
-}
tree
lookup_decomp_type (tree v)
@@ -7946,7 +7939,7 @@ cp_finish_decomp (tree decl, tree first, unsigned int count)
goto error_out;
}
/* Save the decltype away before reference collapse. */
- store_decomp_type (v[i], eltype);
+ hash_map_safe_put<hm_ggc> (decomp_type_table, v[i], eltype);
eltype = cp_build_reference_type (eltype, !lvalue_p (init));
TREE_TYPE (v[i]) = eltype;
layout_decl (v[i], 0);
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 67e0656..76fa030 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -563,10 +563,9 @@ get_nsdmi (tree member, bool in_ctor, tsubst_flags_t complain)
init = DECL_INITIAL (DECL_TI_TEMPLATE (member));
location_t expr_loc
= cp_expr_loc_or_loc (init, DECL_SOURCE_LOCATION (member));
- tree *slot;
if (TREE_CODE (init) == DEFERRED_PARSE)
/* Unparsed. */;
- else if (nsdmi_inst && (slot = nsdmi_inst->get (member)))
+ else if (tree *slot = hash_map_safe_get (nsdmi_inst, member))
init = *slot;
/* Check recursive instantiation. */
else if (DECL_INSTANTIATING_NSDMI_P (member))
@@ -611,11 +610,7 @@ get_nsdmi (tree member, bool in_ctor, tsubst_flags_t complain)
DECL_INSTANTIATING_NSDMI_P (member) = 0;
if (init != error_mark_node)
- {
- if (!nsdmi_inst)
- nsdmi_inst = tree_cache_map::create_ggc (37);
- nsdmi_inst->put (member, init);
- }
+ hash_map_safe_put<hm_ggc> (nsdmi_inst, member, init);
if (pushed)
{
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 44b3618..67b3b63 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -7357,21 +7357,6 @@ coerce_template_args_for_ttp (tree templ, tree arglist,
/* A cache of template template parameters with match-all default
arguments. */
static GTY((deletable)) hash_map<tree,tree> *defaulted_ttp_cache;
-static void
-store_defaulted_ttp (tree v, tree t)
-{
- if (!defaulted_ttp_cache)
- defaulted_ttp_cache = hash_map<tree,tree>::create_ggc (13);
- defaulted_ttp_cache->put (v, t);
-}
-static tree
-lookup_defaulted_ttp (tree v)
-{
- if (defaulted_ttp_cache)
- if (tree *p = defaulted_ttp_cache->get (v))
- return *p;
- return NULL_TREE;
-}
/* T is a bound template template-parameter. Copy its arguments into default
arguments of the template template-parameter's template parameters. */
@@ -7379,8 +7364,8 @@ lookup_defaulted_ttp (tree v)
static tree
add_defaults_to_ttp (tree otmpl)
{
- if (tree c = lookup_defaulted_ttp (otmpl))
- return c;
+ if (tree *c = hash_map_safe_get (defaulted_ttp_cache, otmpl))
+ return *c;
tree ntmpl = copy_node (otmpl);
@@ -7410,7 +7395,7 @@ add_defaults_to_ttp (tree otmpl)
}
}
- store_defaulted_ttp (otmpl, ntmpl);
+ hash_map_safe_put<hm_ggc> (defaulted_ttp_cache, otmpl, ntmpl);
return ntmpl;
}