summaryrefslogtreecommitdiff
path: root/gcc/ipa-icf.h
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2015-11-12 16:16:00 +0100
committerMartin Liska <marxin@gcc.gnu.org>2015-11-12 15:16:00 +0000
commit808b6bb7a8a4c30ac6f375ca2f6f0cb72fb3e766 (patch)
tree9c0e3a01a29255ea0316cfea7a3a7ce1fd63979b /gcc/ipa-icf.h
parentc2a12ca06dd0762c03ec8f0f3be3feb096119386 (diff)
downloadgcc-808b6bb7a8a4c30ac6f375ca2f6f0cb72fb3e766.tar.gz
re PR ipa/68035 (ipa performance issue when no procedures are present)
Fix PR ipa/68035 PR ipa/68035 * ipa-icf.c (void sem_item::set_hash): New function. (sem_function::get_hash): Use renamed m_hash member variable. (sem_item::update_hash_by_addr_refs): Utilize get_hash. (sem_item::update_hash_by_local_refs): Likewise. (sem_variable::get_hash): Use renamed m_hash member variable. (sem_item_optimizer::update_hash_by_addr_refs): Utilize get_hash. (sem_item_optimizer::build_hash_based_classes): Utilize set_hash. (sem_item_optimizer::build_graph): As the hash value of an item is lazy initialized, force the calculation. * ipa-icf.h (set_hash): Declare new function and rename hash member variable to m_hash. * gcc.dg/ipa/pr68035.c: New test. From-SVN: r230263
Diffstat (limited to 'gcc/ipa-icf.h')
-rw-r--r--gcc/ipa-icf.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/ipa-icf.h b/gcc/ipa-icf.h
index 365e86fd35f..c48cb184383 100644
--- a/gcc/ipa-icf.h
+++ b/gcc/ipa-icf.h
@@ -181,6 +181,9 @@ public:
/* References independent hash function. */
virtual hashval_t get_hash (void) = 0;
+ /* Set new hash value of the item. */
+ void set_hash (hashval_t hash);
+
/* Merges instance with an ALIAS_ITEM, where alias, thunk or redirection can
be applied. */
virtual bool merge (sem_item *alias_item) = 0;
@@ -234,9 +237,6 @@ public:
/* A set with symbol table references. */
hash_set <symtab_node *> refs_set;
- /* Hash of item. */
- hashval_t hash;
-
/* Temporary hash used where hash values of references are added. */
hashval_t global_hash;
protected:
@@ -270,6 +270,9 @@ protected:
&ignored_nodes,
symtab_node *n1, symtab_node *n2,
bool address);
+protected:
+ /* Hash of item. */
+ hashval_t m_hash;
private:
/* Initialize internal data structures. Bitmap STACK is used for