aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-10-10 21:31:58 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2019-10-10 19:31:58 +0000
commit6488759f404f3aff6642b005242a9c82a1c2cee2 (patch)
treead489c8232dc50fc38c00aa122319b8892d5fb51 /gcc
parentcd8589ab05a8d926c5330055c1099d300d64a0a8 (diff)
downloadgcc-6488759f404f3aff6642b005242a9c82a1c2cee2.zip
gcc-6488759f404f3aff6642b005242a9c82a1c2cee2.tar.gz
gcc-6488759f404f3aff6642b005242a9c82a1c2cee2.tar.bz2
ipa-reference.c: Do not include splay-tree.h
* ipa-reference.c: Do not include splay-tree.h (reference_vars_to_consider): Turn to hash map. (get_static_name, ipa_init, analyze_function, propagate, stream_out_bitmap, ipa_reference_write_optimization_summary, ipa_reference_write_optimization_summary): Update. From-SVN: r276850
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/ipa-reference.c32
2 files changed, 22 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6307ea3..6a86dd8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2019-10-10 Jan Hubicka <hubicka@ucw.cz>
+ * ipa-reference.c: Do not include splay-tree.h
+ (reference_vars_to_consider): Turn to hash map.
+ (get_static_name, ipa_init, analyze_function, propagate,
+ stream_out_bitmap, ipa_reference_write_optimization_summary,
+ ipa_reference_write_optimization_summary): Update.
+
+2019-10-10 Jan Hubicka <hubicka@ucw.cz>
+
* ipa-reference.c (propagate): Fix releasing of IPA summaries.
2019-10-10 Iain Sandoe <iain@sandoe.co.uk>
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index e95a724..977eb2d 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "data-streamer.h"
#include "calls.h"
-#include "splay-tree.h"
#include "ipa-utils.h"
#include "ipa-reference.h"
#include "symbol-summary.h"
@@ -92,9 +91,11 @@ struct ipa_reference_vars_info_d
typedef struct ipa_reference_vars_info_d *ipa_reference_vars_info_t;
-/* This splay tree contains all of the static variables that are
+/* This map contains all of the static variables that are
being considered by the compilation level alias analysis. */
-static splay_tree reference_vars_to_consider;
+typedef hash_map<int_hash <unsigned int, -1U>, tree>
+ reference_vars_to_consider_t;
+static reference_vars_to_consider_t *reference_vars_to_consider;
/* Set of all interesting module statics. A bit is set for every module
static we are considering. This is added to the local info when asm
@@ -272,9 +273,7 @@ is_proper_for_analysis (tree t)
static const char *
get_static_name (int index)
{
- splay_tree_node stn =
- splay_tree_lookup (reference_vars_to_consider, index);
- return fndecl_name ((tree)(stn->value));
+ return fndecl_name (*reference_vars_to_consider->get (index));
}
/* Dump a set of static vars to FILE. */
@@ -416,7 +415,7 @@ ipa_init (void)
ipa_init_p = true;
if (dump_file)
- reference_vars_to_consider = splay_tree_new (splay_tree_compare_ints, 0, 0);
+ reference_vars_to_consider = new reference_vars_to_consider_t(251);
bitmap_obstack_initialize (&local_info_obstack);
bitmap_obstack_initialize (&optimization_summary_obstack);
@@ -476,9 +475,8 @@ analyze_function (struct cgraph_node *fn)
&& bitmap_set_bit (all_module_statics, ipa_reference_var_uid (var)))
{
if (dump_file)
- splay_tree_insert (reference_vars_to_consider,
- ipa_reference_var_uid (var),
- (splay_tree_value)var);
+ reference_vars_to_consider->put (ipa_reference_var_uid (var),
+ var);
}
switch (ref->use)
{
@@ -898,7 +896,7 @@ propagate (void)
}
if (dump_file)
- splay_tree_delete (reference_vars_to_consider);
+ delete reference_vars_to_consider;
reference_vars_to_consider = NULL;
return remove_p ? TODO_remove_functions : 0;
}
@@ -968,8 +966,7 @@ stream_out_bitmap (struct lto_simple_output_block *ob,
return;
EXECUTE_IF_AND_IN_BITMAP (bits, ltrans_statics, 0, index, bi)
{
- tree decl = (tree)splay_tree_lookup (reference_vars_to_consider,
- index)->value;
+ tree decl = *reference_vars_to_consider->get (index);
lto_output_var_decl_index (ob->decl_state, ob->main_stream, decl);
}
}
@@ -987,7 +984,7 @@ ipa_reference_write_optimization_summary (void)
auto_bitmap ltrans_statics;
int i;
- reference_vars_to_consider = splay_tree_new (splay_tree_compare_ints, 0, 0);
+ reference_vars_to_consider = new reference_vars_to_consider_t (251);
/* See what variables we are interested in. */
for (i = 0; i < lto_symtab_encoder_size (encoder); i++)
@@ -1001,9 +998,8 @@ ipa_reference_write_optimization_summary (void)
{
tree decl = vnode->decl;
bitmap_set_bit (ltrans_statics, ipa_reference_var_uid (decl));
- splay_tree_insert (reference_vars_to_consider,
- ipa_reference_var_uid (decl),
- (splay_tree_value)decl);
+ reference_vars_to_consider->put
+ (ipa_reference_var_uid (decl), decl);
ltrans_statics_bitcount ++;
}
}
@@ -1045,7 +1041,7 @@ ipa_reference_write_optimization_summary (void)
}
}
lto_destroy_simple_output_block (ob);
- splay_tree_delete (reference_vars_to_consider);
+ delete reference_vars_to_consider;
}
/* Deserialize the ipa info for lto. */