IPA ICF: make type cache a static field sem_item.
authorMartin Liska <mliska@suse.cz>
Fri, 31 Aug 2018 11:37:09 +0000 (13:37 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 31 Aug 2018 11:37:09 +0000 (11:37 +0000)
2018-08-31  Martin Liska  <mliska@suse.cz>

* ipa-icf.c (sem_item::add_type): Use
sem_item::m_type_hash_cache.
* ipa-icf.h: Move the cache from sem_item_optimizer
to sem_item.

From-SVN: r264014

gcc/ChangeLog
gcc/ipa-icf.c
gcc/ipa-icf.h

index 1fbcbd5bea5b0cdfdfb52ba283a6f346e9d33910..62918c311ae227f7e18c1386c878ba753c0421b0 100644 (file)
@@ -1,3 +1,10 @@
+2018-08-31  Martin Liska  <mliska@suse.cz>
+
+       * ipa-icf.c (sem_item::add_type): Use
+       sem_item::m_type_hash_cache.
+       * ipa-icf.h: Move the cache from sem_item_optimizer
+       to sem_item.
+
 2018-08-31  Nathan Sidwell  <nathan@acm.org>
 
        * doc/extend.texi (Backwards Compatibility): Remove implicit
index 39b96ba13be72c8d2d7a78896f7afe4f6e1f2e04..8a6a7a3f32f8b691c99a5cfc28d59a0d578c185e 100644 (file)
@@ -227,6 +227,8 @@ void sem_item::set_hash (hashval_t hash)
   m_hash_set = true;
 }
 
+hash_map<const_tree, hashval_t> sem_item::m_type_hash_cache;
+
 /* Semantic function constructor that uses STACK as bitmap memory stack.  */
 
 sem_function::sem_function (bitmap_obstack *stack)
@@ -1587,7 +1589,7 @@ sem_item::add_type (const_tree type, inchash::hash &hstate)
          return;
        }
 
-      hashval_t *val = optimizer->m_type_hash_cache.get (type);
+      hashval_t *val = m_type_hash_cache.get (type);
 
       if (!val)
        {
@@ -1607,7 +1609,7 @@ sem_item::add_type (const_tree type, inchash::hash &hstate)
          hstate2.add_int (nf);
          hash = hstate2.end ();
          hstate.add_hwi (hash);
-         optimizer->m_type_hash_cache.put (type, hash);
+         m_type_hash_cache.put (type, hash);
        }
       else
         hstate.add_hwi (*val);
index 622aebc00c08a266227cb841fa84818761651402..a64b3852efb63c348e433a32db8eae150343abb9 100644 (file)
@@ -281,6 +281,9 @@ private:
   /* Initialize internal data structures. Bitmap STACK is used for
      bitmap memory allocation process.  */
   void setup (bitmap_obstack *stack);
+
+  /* Because types can be arbitrarily large, avoid quadratic bottleneck.  */
+  static hash_map<const_tree, hashval_t> m_type_hash_cache;
 }; // class sem_item
 
 class sem_function: public sem_item
@@ -524,9 +527,6 @@ public:
   /* Gets a congruence class group based on given HASH value and TYPE.  */
   congruence_class_group *get_group_by_hash (hashval_t hash,
       sem_item_type type);
-
-  /* Because types can be arbitrarily large, avoid quadratic bottleneck.  */
-  hash_map<const_tree, hashval_t> m_type_hash_cache;
 private:
 
   /* For each semantic item, append hash values of references.  */