aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-complex.c
diff options
context:
space:
mode:
authorTrevor Saunders <tsaunders@mozilla.com>2014-06-24 13:21:53 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2014-06-24 13:21:53 +0000
commit84baa4b968f2dbf4e85e49dba9215ad0f0f3ddc8 (patch)
tree8527b8e2f9f9bb9c3a525567a8e393965e2ad66c /gcc/tree-complex.c
parentc203e8a73b2f12a1da52a16a0c4a50e62b42445b (diff)
downloadgcc-84baa4b968f2dbf4e85e49dba9215ad0f0f3ddc8.zip
gcc-84baa4b968f2dbf4e85e49dba9215ad0f0f3ddc8.tar.gz
gcc-84baa4b968f2dbf4e85e49dba9215ad0f0f3ddc8.tar.bz2
allow storing values directly in hash tables
gcc/ * hash-table.h: Add a template arg to choose between storing values and storing pointers to values, and then provide partial specializations for both. * tree-browser.c (tree_upper_hasher): Provide the type the hash table should store, not the type values should point to. * tree-into-ssa.c (var_info_hasher): Likewise. * tree-ssa-dom.c (expr_elt_hasher): Likewise. * tree-complex.c: Adjust. * tree-hasher.h (int_tree_hasher): store int_tree_map in the hash table instead of int_tree_map *. * tree-parloops.c: Adjust. * tree-ssa-reassoc.c (ocount_hasher): Don't lie to hash_map about what type is being stored. * tree-vectorizer.c: Adjust. From-SVN: r211937
Diffstat (limited to 'gcc/tree-complex.c')
-rw-r--r--gcc/tree-complex.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index 7b0115d..3ed403a 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -83,10 +83,9 @@ static vec<tree> complex_ssa_name_components;
static tree
cvc_lookup (unsigned int uid)
{
- struct int_tree_map *h, in;
+ struct int_tree_map in;
in.uid = uid;
- h = complex_variable_components->find_with_hash (&in, uid);
- return h ? h->to : NULL;
+ return complex_variable_components->find_with_hash (in, uid).to;
}
/* Insert the pair UID, TO into the complex_variable_components hashtable. */
@@ -94,14 +93,13 @@ cvc_lookup (unsigned int uid)
static void
cvc_insert (unsigned int uid, tree to)
{
- struct int_tree_map *h;
- int_tree_map **loc;
+ int_tree_map h;
+ int_tree_map *loc;
- h = XNEW (struct int_tree_map);
- h->uid = uid;
- h->to = to;
+ h.uid = uid;
loc = complex_variable_components->find_slot_with_hash (h, uid, INSERT);
- *loc = h;
+ loc->uid = uid;
+ loc->to = to;
}
/* Return true if T is not a zero constant. In the case of real values,