diff options
author | Martin Liska <mliska@suse.cz> | 2015-11-12 16:16:00 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2015-11-12 15:16:00 +0000 |
commit | 808b6bb7a8a4c30ac6f375ca2f6f0cb72fb3e766 (patch) | |
tree | 9c0e3a01a29255ea0316cfea7a3a7ce1fd63979b /gcc/ipa-icf.h | |
parent | c2a12ca06dd0762c03ec8f0f3be3feb096119386 (diff) | |
download | gcc-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.h | 9 |
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 |