diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2019-11-11 19:11:02 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2019-11-11 19:11:02 +0000 |
commit | 98aad294705ac35aec058e020867d736d841dad0 (patch) | |
tree | 06af2352f1bd5c5a3cbfdd8ba9ab736bb6dd968c /gcc/ipa-prop.h | |
parent | 8be34204decbb1bd751bee05394be5c995831503 (diff) |
ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipcp summary.
* ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipcp
summary.
(ipcp_transformation_t::duplicate): Break out from ...
(ipa_node_params_t::duplicate): ... here; add copying of agg
replacements.
* ipa-prop.h (ipcp_transformation): Add constructor and destructor.
(ipcp_transformation_t): Add duplicate.
From-SVN: r278062
Diffstat (limited to 'gcc/ipa-prop.h')
-rw-r--r-- | gcc/ipa-prop.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 952c01209f5..3422cb2ddb9 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -639,6 +639,25 @@ struct GTY(()) ipcp_transformation vec<ipa_bits *, va_gc> *bits; /* Value range information. */ vec<ipa_vr, va_gc> *m_vr; + + /* Default constructor. */ + ipcp_transformation () + : agg_values (NULL), bits (NULL), m_vr (NULL) + { } + + /* Default destructor. */ + ~ipcp_transformation () + { + ipa_agg_replacement_value *agg = agg_values; + while (agg) + { + ipa_agg_replacement_value *next = agg->next; + ggc_free (agg); + agg = next; + } + vec_free (bits); + vec_free (m_vr); + } }; void ipa_set_node_agg_value_chain (struct cgraph_node *node, @@ -759,6 +778,11 @@ public: ipcp_transformation_t (symtab, true); return summary; } + /* Hook that is called by summary when a node is duplicated. */ + virtual void duplicate (cgraph_node *node, + cgraph_node *node2, + ipcp_transformation *data, + ipcp_transformation *data2); }; /* Function summary where the IPA CP transformations are actually stored. */ |