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 |
> 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 >
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