From 12e088ba57ee2735dab15ce56cbf3c936a7d44db Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Thu, 3 Oct 2019 12:39:55 +0000 Subject: [PATCH] re PR jit/91928 (libgccjit fails on subsequent compilations in ipa-cp) PR jit/91928 * ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum. * ipa-prop.c (ipcp_free_transformation_sum): New function. * ipa-prop.h (ipcp_free_transformation_sum): Add declaration. From-SVN: r276507 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-cp.c | 1 + gcc/ipa-prop.c | 12 ++++++++++++ gcc/ipa-prop.h | 1 + 4 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 991949b3c1b..bd550afd37e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-10-03 Andrea Corallo + + * ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum. + * ipa-prop.c (ipcp_free_transformation_sum): New function. + * ipa-prop.h (ipcp_free_transformation_sum): Add declaration. + 2019-10-03 Aldy Hernandez * Makefile.in (OBJS): Add range.o and range-op.o. diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 67664ec8c07..045072e02ec 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -5304,4 +5304,5 @@ ipa_cp_c_finalize (void) max_count = profile_count::uninitialized (); overall_size = 0; max_new_size = 0; + ipcp_free_transformation_sum (); } diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 25a108d5824..e79add12b1e 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -3758,6 +3758,18 @@ ipcp_transformation_initialize (void) ipcp_transformation_sum = ipcp_transformation_t::create_ggc (symtab); } +/* Release the IPA CP transformation summary. */ + +void +ipcp_free_transformation_sum (void) +{ + if (!ipcp_transformation_sum) + return; + + ipcp_transformation_sum->release (); + ipcp_transformation_sum = NULL; +} + /* Set the aggregate replacements of NODE to be AGGVALS. */ void diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 30948fb8854..0ff80854284 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -561,6 +561,7 @@ struct GTY(()) ipcp_transformation void ipa_set_node_agg_value_chain (struct cgraph_node *node, struct ipa_agg_replacement_value *aggvals); void ipcp_transformation_initialize (void); +void ipcp_free_transformation_sum (void); /* ipa_edge_args stores information related to a callsite and particularly its arguments. It can be accessed by the IPA_EDGE_REF macro. */ -- 2.30.2