This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 3/N] Make symbol_summary::get and call_summary::get pure.
- From: Martin Liška <mliska at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Jan Hubicka <hubicka at ucw dot cz>
- Date: Thu, 21 Jun 2018 16:25:05 +0200
- Subject: [PATCH 3/N] Make symbol_summary::get and call_summary::get pure.
- References: <1263dd85-811b-94d2-f769-b702ce2ba0da@suse.cz>
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
>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