aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrea Corallo <andrea.corallo@arm.com>2019-10-03 12:39:55 +0000
committerAndrea Corallo <akrl@gcc.gnu.org>2019-10-03 12:39:55 +0000
commit12e088ba57ee2735dab15ce56cbf3c936a7d44db (patch)
tree49fe579d1182cd7bbd0f26ef931ef54f2b3cb164 /gcc
parent3aad513c68676dc93ae24ed70022093dc3920e18 (diff)
downloadgcc-12e088ba57ee2735dab15ce56cbf3c936a7d44db.zip
gcc-12e088ba57ee2735dab15ce56cbf3c936a7d44db.tar.gz
gcc-12e088ba57ee2735dab15ce56cbf3c936a7d44db.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-cp.c1
-rw-r--r--gcc/ipa-prop.c12
-rw-r--r--gcc/ipa-prop.h1
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 991949b..bd550af 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-10-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * 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 <aldyh@redhat.com>
* Makefile.in (OBJS): Add range.o and range-op.o.
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 67664ec..045072e 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 25a108d..e79add1 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 30948fb..0ff8085 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. */