gcc/ChangeLog: 2015-04-30 Martin Liska <mli...@suse.cz>
* ipa-prop.c (ipa_set_jf_constant): Use new type-based pool allocator. (ipa_edge_duplication_hook): Likewise. (ipa_free_all_structures_after_ipa_cp): Likewise. (ipa_free_all_structures_after_iinln): Likewise. --- gcc/ipa-prop.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 26be5f2..80ce6b8 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -176,7 +176,8 @@ struct ipa_cst_ref_desc /* Allocation pool for reference descriptions. */ -static alloc_pool ipa_refdesc_pool; +static pool_allocator<ipa_cst_ref_desc> ipa_refdesc_pool + ("IPA-PROP ref descriptions", 32); /* Return true if DECL_FUNCTION_SPECIFIC_OPTIMIZATION of the decl associated with NODE should prevent us from analyzing it for the purposes of IPA-CP. */ @@ -508,11 +509,8 @@ ipa_set_jf_constant (struct ipa_jump_func *jfunc, tree constant, && TREE_CODE (TREE_OPERAND (constant, 0)) == FUNCTION_DECL) { struct ipa_cst_ref_desc *rdesc; - if (!ipa_refdesc_pool) - ipa_refdesc_pool = create_alloc_pool ("IPA-PROP ref descriptions", - sizeof (struct ipa_cst_ref_desc), 32); - rdesc = (struct ipa_cst_ref_desc *) pool_alloc (ipa_refdesc_pool); + rdesc = ipa_refdesc_pool.allocate (); rdesc->cs = cs; rdesc->next_duplicate = NULL; rdesc->refcount = 1; @@ -3517,9 +3515,7 @@ ipa_edge_duplication_hook (struct cgraph_edge *src, struct cgraph_edge *dst, gcc_checking_assert (ref); dst->caller->clone_reference (ref, ref->stmt); - gcc_checking_assert (ipa_refdesc_pool); - struct ipa_cst_ref_desc *dst_rdesc - = (struct ipa_cst_ref_desc *) pool_alloc (ipa_refdesc_pool); + struct ipa_cst_ref_desc *dst_rdesc = ipa_refdesc_pool.allocate (); dst_rdesc->cs = dst; dst_rdesc->refcount = src_rdesc->refcount; dst_rdesc->next_duplicate = NULL; @@ -3527,10 +3523,7 @@ ipa_edge_duplication_hook (struct cgraph_edge *src, struct cgraph_edge *dst, } else if (src_rdesc->cs == src) { - struct ipa_cst_ref_desc *dst_rdesc; - gcc_checking_assert (ipa_refdesc_pool); - dst_rdesc - = (struct ipa_cst_ref_desc *) pool_alloc (ipa_refdesc_pool); + struct ipa_cst_ref_desc *dst_rdesc = ipa_refdesc_pool.allocate (); dst_rdesc->cs = dst; dst_rdesc->refcount = src_rdesc->refcount; dst_rdesc->next_duplicate = src_rdesc->next_duplicate; @@ -3681,8 +3674,7 @@ ipa_free_all_structures_after_ipa_cp (void) free_alloc_pool (ipcp_poly_ctx_values_pool); free_alloc_pool (ipcp_agg_lattice_pool); ipa_unregister_cgraph_hooks (); - if (ipa_refdesc_pool) - free_alloc_pool (ipa_refdesc_pool); + ipa_refdesc_pool.release (); } } @@ -3703,8 +3695,7 @@ ipa_free_all_structures_after_iinln (void) free_alloc_pool (ipcp_poly_ctx_values_pool); if (ipcp_agg_lattice_pool) free_alloc_pool (ipcp_agg_lattice_pool); - if (ipa_refdesc_pool) - free_alloc_pool (ipa_refdesc_pool); + ipa_refdesc_pool.release (); } /* Print ipa_tree_map data structures of all functions in the -- 2.1.4