diff mbox series

[3/N] Make symbol_summary::get and call_summary::get pure.

Message ID de0ad31b-7866-486f-2aea-ef38f7763e91@suse.cz
State New
Headers show
Series [3/N] Make symbol_summary::get and call_summary::get pure. | expand

Commit Message

Martin Liška June 21, 2018, 2:25 p.m. UTC
Hi.

Last part of planned clean-up where I declare ::get as PURE.
Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.

Ready to be installed?
Martin

Comments

Jan Hubicka June 21, 2018, 3:38 p.m. UTC | #1
> Hi.
> 
> Last part of planned clean-up where I declare ::get as PURE.
> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
> 
> Ready to be installed?
OK,
thanks!
Honza
> Martin

> From 540efe3374d649cc8745445a3e6dc1c720fb79ad Mon Sep 17 00:00:00 2001
> From: marxin <mliska@suse.cz>
> Date: Wed, 20 Jun 2018 14:26:48 +0200
> Subject: [PATCH] Make symbol_summary::get and call_summary::get pure.
> 
> gcc/ChangeLog:
> 
> 2018-06-20  Martin Liska  <mliska@suse.cz>
> 
> 	* symbol-summary.h (get): Make it pure and inline move
>         functionality from ::get function.
>         (get): Remove and inline into ::get and ::get_create.
>         (get_create): Move code from ::get function.
> ---
>  gcc/symbol-summary.h | 74 +++++++++++---------------------------------
>  1 file changed, 18 insertions(+), 56 deletions(-)
> 
> diff --git a/gcc/symbol-summary.h b/gcc/symbol-summary.h
> index bf32810abd7..26e9773d3c0 100644
> --- a/gcc/symbol-summary.h
> +++ b/gcc/symbol-summary.h
> @@ -90,13 +90,19 @@ public:
>       does not exist it will be created.  */
>    T* get_create (cgraph_node *node)
>    {
> -    return get (node->get_uid (), true);
> +    bool existed;
> +    T **v = &m_map.get_or_insert (node->get_uid (), &existed);
> +    if (!existed)
> +      *v = allocate_new ();
> +
> +    return *v;
>    }
>  
>    /* Getter for summary callgraph node pointer.  */
> -  T* get (cgraph_node *node)
> +  T* get (cgraph_node *node) ATTRIBUTE_PURE
>    {
> -    return get (node->get_uid (), false);
> +    T **v = m_map.get (node->get_uid ());
> +    return v == NULL ? NULL : *v;
>    }
>  
>    /* Remove node from summary.  */
> @@ -152,9 +158,6 @@ protected:
>  private:
>    typedef int_hash <int, 0, -1> map_hash;
>  
> -  /* Getter for summary callgraph ID.  */
> -  T *get (int uid, bool lazy_insert);
> -
>    /* Indicates if insertion hook is enabled.  */
>    bool m_insertion_enabled;
>    /* Indicates if the summary is released.  */
> @@ -273,28 +276,6 @@ function_summary<T *>::symtab_duplication (cgraph_node *node,
>      }
>  }
>  
> -template <typename T>
> -T*
> -function_summary<T *>::get (int uid, bool lazy_insert)
> -{
> -  gcc_checking_assert (uid > 0);
> -
> -  if (lazy_insert)
> -    {
> -      bool existed;
> -      T **v = &m_map.get_or_insert (uid, &existed);
> -      if (!existed)
> -	*v = allocate_new ();
> -
> -      return *v;
> -    }
> -  else
> -    {
> -      T **v = m_map.get (uid);
> -      return v == NULL ? NULL : *v;
> -    }
> -}
> -
>  template <typename T>
>  void
>  gt_ggc_mx(function_summary<T *>* const &summary)
> @@ -387,13 +368,19 @@ public:
>       If a summary for an edge does not exist, it will be created.  */
>    T* get_create (cgraph_edge *edge)
>    {
> -    return get (edge->get_uid (), true);
> +    bool existed;
> +    T **v = &m_map.get_or_insert (edge->get_uid (), &existed);
> +    if (!existed)
> +      *v = allocate_new ();
> +
> +    return *v;
>    }
>  
>    /* Getter for summary callgraph edge pointer.  */
> -  T* get (cgraph_edge *edge)
> +  T* get (cgraph_edge *edge) ATTRIBUTE_PURE
>    {
> -    return get (edge->get_uid (), false);
> +    T **v = m_map.get (edge->get_uid ());
> +    return v == NULL ? NULL : *v;
>    }
>  
>    /* Remove edge from summary.  */
> @@ -437,9 +424,6 @@ protected:
>  private:
>    typedef int_hash <int, 0, -1> map_hash;
>  
> -  /* Getter for summary callgraph ID.  */
> -  T *get (int uid, bool lazy_insert);
> -
>    /* Main summary store, where summary ID is used as key.  */
>    hash_map <map_hash, T *> m_map;
>    /* Internal summary removal hook pointer.  */
> @@ -457,28 +441,6 @@ private:
>        gt_pointer_operator, void *);
>  };
>  
> -template <typename T>
> -T*
> -call_summary<T *>::get (int uid, bool lazy_insert)
> -{
> -  gcc_checking_assert (uid > 0);
> -
> -  if (lazy_insert)
> -    {
> -      bool existed;
> -      T **v = &m_map.get_or_insert (uid, &existed);
> -      if (!existed)
> -	*v = allocate_new ();
> -
> -      return *v;
> -    }
> -  else
> -    {
> -      T **v = m_map.get (uid);
> -      return v == NULL ? NULL : *v;
> -    }
> -}
> -
>  template <typename T>
>  void
>  call_summary<T *>::release ()
> -- 
> 2.17.1
>
diff mbox series

Patch

From 540efe3374d649cc8745445a3e6dc1c720fb79ad Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Wed, 20 Jun 2018 14:26:48 +0200
Subject: [PATCH] Make symbol_summary::get and call_summary::get pure.

gcc/ChangeLog:

2018-06-20  Martin Liska  <mliska@suse.cz>

	* symbol-summary.h (get): Make it pure and inline move
        functionality from ::get function.
        (get): Remove and inline into ::get and ::get_create.
        (get_create): Move code from ::get function.
---
 gcc/symbol-summary.h | 74 +++++++++++---------------------------------
 1 file changed, 18 insertions(+), 56 deletions(-)

diff --git a/gcc/symbol-summary.h b/gcc/symbol-summary.h
index bf32810abd7..26e9773d3c0 100644
--- a/gcc/symbol-summary.h
+++ b/gcc/symbol-summary.h
@@ -90,13 +90,19 @@  public:
      does not exist it will be created.  */
   T* get_create (cgraph_node *node)
   {
-    return get (node->get_uid (), true);
+    bool existed;
+    T **v = &m_map.get_or_insert (node->get_uid (), &existed);
+    if (!existed)
+      *v = allocate_new ();
+
+    return *v;
   }
 
   /* Getter for summary callgraph node pointer.  */
-  T* get (cgraph_node *node)
+  T* get (cgraph_node *node) ATTRIBUTE_PURE
   {
-    return get (node->get_uid (), false);
+    T **v = m_map.get (node->get_uid ());
+    return v == NULL ? NULL : *v;
   }
 
   /* Remove node from summary.  */
@@ -152,9 +158,6 @@  protected:
 private:
   typedef int_hash <int, 0, -1> map_hash;
 
-  /* Getter for summary callgraph ID.  */
-  T *get (int uid, bool lazy_insert);
-
   /* Indicates if insertion hook is enabled.  */
   bool m_insertion_enabled;
   /* Indicates if the summary is released.  */
@@ -273,28 +276,6 @@  function_summary<T *>::symtab_duplication (cgraph_node *node,
     }
 }
 
-template <typename T>
-T*
-function_summary<T *>::get (int uid, bool lazy_insert)
-{
-  gcc_checking_assert (uid > 0);
-
-  if (lazy_insert)
-    {
-      bool existed;
-      T **v = &m_map.get_or_insert (uid, &existed);
-      if (!existed)
-	*v = allocate_new ();
-
-      return *v;
-    }
-  else
-    {
-      T **v = m_map.get (uid);
-      return v == NULL ? NULL : *v;
-    }
-}
-
 template <typename T>
 void
 gt_ggc_mx(function_summary<T *>* const &summary)
@@ -387,13 +368,19 @@  public:
      If a summary for an edge does not exist, it will be created.  */
   T* get_create (cgraph_edge *edge)
   {
-    return get (edge->get_uid (), true);
+    bool existed;
+    T **v = &m_map.get_or_insert (edge->get_uid (), &existed);
+    if (!existed)
+      *v = allocate_new ();
+
+    return *v;
   }
 
   /* Getter for summary callgraph edge pointer.  */
-  T* get (cgraph_edge *edge)
+  T* get (cgraph_edge *edge) ATTRIBUTE_PURE
   {
-    return get (edge->get_uid (), false);
+    T **v = m_map.get (edge->get_uid ());
+    return v == NULL ? NULL : *v;
   }
 
   /* Remove edge from summary.  */
@@ -437,9 +424,6 @@  protected:
 private:
   typedef int_hash <int, 0, -1> map_hash;
 
-  /* Getter for summary callgraph ID.  */
-  T *get (int uid, bool lazy_insert);
-
   /* Main summary store, where summary ID is used as key.  */
   hash_map <map_hash, T *> m_map;
   /* Internal summary removal hook pointer.  */
@@ -457,28 +441,6 @@  private:
       gt_pointer_operator, void *);
 };
 
-template <typename T>
-T*
-call_summary<T *>::get (int uid, bool lazy_insert)
-{
-  gcc_checking_assert (uid > 0);
-
-  if (lazy_insert)
-    {
-      bool existed;
-      T **v = &m_map.get_or_insert (uid, &existed);
-      if (!existed)
-	*v = allocate_new ();
-
-      return *v;
-    }
-  else
-    {
-      T **v = m_map.get (uid);
-      return v == NULL ? NULL : *v;
-    }
-}
-
 template <typename T>
 void
 call_summary<T *>::release ()
-- 
2.17.1