From patchwork Wed May 27 13:56:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Li=C5=A1ka?= X-Patchwork-Id: 477153 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 5E96914016A for ; Thu, 28 May 2015 00:18:58 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=GNE3CB/R; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :resent-from:resent-to:resent-date:resent-message-id:message-id :in-reply-to:references:from:date:subject:to; q=dns; s=default; b= eONuiv5mlkAQjhewKJc9d9eJYYV8Rsbrn0qFg20OdFGASEaHAQuvDacl5WH7+Pfp HWcWTffsuijS9qXA8oux3+KhU1s/kzYMZY9c1ipg9AQJPoXcigL124xPqMIiXior QAmEg6e52RZxNIAR2hUncfXT26yjwEsJ78J3PxdGvrA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :resent-from:resent-to:resent-date:resent-message-id:message-id :in-reply-to:references:from:date:subject:to; s=default; bh=nzp1 be39fMP9qSBJKXIKkQM87G4=; b=GNE3CB/RjGaLoe8juIoIxRPAr5gbApGV6riq 9SQNOdpwG4GFvlswsu1eR0EeRP3zSBUGdnwEdt8Fjof4zInyv2XxoUkzZjsZBR6z /nrmDMpBBTS5A83IsmLUAlzsO5pVn9LfSX7H5nf4AD/5as3Tr9SVrCvEAtPzzXW9 bKYdJPs= Received: (qmail 94715 invoked by alias); 27 May 2015 14:17:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 94286 invoked by uid 89); 27 May 2015 14:17:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.7 required=5.0 tests=AWL, BAYES_50, KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 27 May 2015 14:17:52 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YxbsJ-0007Le-QG for gcc-patches@gcc.gnu.org; Wed, 27 May 2015 10:00:17 -0400 Received: from cantor2.suse.de ([195.135.220.15]:57542 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxbsJ-0007In-Gq for gcc-patches@gcc.gnu.org; Wed, 27 May 2015 10:00:03 -0400 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 08389AE04 for ; Wed, 27 May 2015 13:59:58 +0000 (UTC) Resent-From: =?UTF-8?B?TWFydGluIExpxaFrYQ==?= Resent-To: GCC Patches Resent-Date: Wed, 27 May 2015 15:59:57 +0200 Resent-Message-ID: <5565CDDD.6060601@suse.cz> Resent-User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 Message-Id: <6543b0aa41219bd948a6d7ee28765ce03ff13ce5.1432735040.git.mliska@suse.cz> In-Reply-To: <83d59ba92a3c4b3ba831ebc2fce325f0416848d0.1432735040.git.mliska@suse.cz> References: <83d59ba92a3c4b3ba831ebc2fce325f0416848d0.1432735040.git.mliska@suse.cz> From: mliska Date: Wed, 27 May 2015 15:56:54 +0200 Subject: [PATCH 30/35] Change use to type-based pool allocator in ipa-inline-analysis.c. To: gcc-patches@gcc.gnu.org X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 195.135.220.15 X-IsSubscribed: yes gcc/ChangeLog: 2015-04-30 Martin Liska * ipa-inline-analysis.c (edge_set_predicate): Use new type-based pool allocator. (set_hint_predicate): Likewise. (inline_summary_alloc): Likewise. (reset_inline_edge_summary): Likewise. (reset_inline_summary): Likewise. (set_cond_stmt_execution_predicate): Likewise. (set_switch_stmt_execution_predicate): Likewise. (compute_bb_predicates): Likewise. (estimate_function_body_sizes): Likewise. (inline_free_summary): Likewise. --- gcc/ipa-inline-analysis.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index 5d99887..7d8edee 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -170,7 +170,7 @@ vec inline_edge_summary_vec; vec edge_growth_cache; /* Edge predicates goes here. */ -static alloc_pool edge_predicate_pool; +static pool_allocator edge_predicate_pool ("edge predicates", 10); /* Return true predicate (tautology). We represent it by empty list of clauses. */ @@ -804,13 +804,13 @@ edge_set_predicate (struct cgraph_edge *e, struct predicate *predicate) if (predicate && !true_predicate_p (predicate)) { if (!es->predicate) - es->predicate = (struct predicate *) pool_alloc (edge_predicate_pool); + es->predicate = edge_predicate_pool.allocate (); *es->predicate = *predicate; } else { if (es->predicate) - pool_free (edge_predicate_pool, es->predicate); + edge_predicate_pool.remove (es->predicate); es->predicate = NULL; } } @@ -823,13 +823,13 @@ set_hint_predicate (struct predicate **p, struct predicate new_predicate) if (false_predicate_p (&new_predicate) || true_predicate_p (&new_predicate)) { if (*p) - pool_free (edge_predicate_pool, *p); + edge_predicate_pool.remove (*p); *p = NULL; } else { if (!*p) - *p = (struct predicate *) pool_alloc (edge_predicate_pool); + *p = edge_predicate_pool.allocate (); **p = new_predicate; } } @@ -1044,9 +1044,6 @@ inline_summary_alloc (void) if (inline_edge_summary_vec.length () <= (unsigned) symtab->edges_max_uid) inline_edge_summary_vec.safe_grow_cleared (symtab->edges_max_uid + 1); - if (!edge_predicate_pool) - edge_predicate_pool = create_alloc_pool ("edge predicates", - sizeof (struct predicate), 10); } /* We are called multiple time for given function; clear @@ -1061,7 +1058,7 @@ reset_inline_edge_summary (struct cgraph_edge *e) es->call_stmt_size = es->call_stmt_time = 0; if (es->predicate) - pool_free (edge_predicate_pool, es->predicate); + edge_predicate_pool.remove (es->predicate); es->predicate = NULL; es->param.release (); } @@ -1086,17 +1083,17 @@ reset_inline_summary (struct cgraph_node *node, info->scc_no = 0; if (info->loop_iterations) { - pool_free (edge_predicate_pool, info->loop_iterations); + edge_predicate_pool.remove (info->loop_iterations); info->loop_iterations = NULL; } if (info->loop_stride) { - pool_free (edge_predicate_pool, info->loop_stride); + edge_predicate_pool.remove (info->loop_stride); info->loop_stride = NULL; } if (info->array_index) { - pool_free (edge_predicate_pool, info->array_index); + edge_predicate_pool.remove (info->array_index); info->array_index = NULL; } vec_free (info->conds); @@ -1812,7 +1809,7 @@ set_cond_stmt_execution_predicate (struct ipa_node_params *info, struct predicate p = add_condition (summary, index, &aggpos, this_code, gimple_cond_rhs (last)); - e->aux = pool_alloc (edge_predicate_pool); + e->aux = edge_predicate_pool.allocate (); *(struct predicate *) e->aux = p; } } @@ -1845,7 +1842,7 @@ set_cond_stmt_execution_predicate (struct ipa_node_params *info, { struct predicate p = add_condition (summary, index, &aggpos, IS_NOT_CONSTANT, NULL_TREE); - e->aux = pool_alloc (edge_predicate_pool); + e->aux = edge_predicate_pool.allocate (); *(struct predicate *) e->aux = p; } } @@ -1878,7 +1875,7 @@ set_switch_stmt_execution_predicate (struct ipa_node_params *info, FOR_EACH_EDGE (e, ei, bb->succs) { - e->aux = pool_alloc (edge_predicate_pool); + e->aux = edge_predicate_pool.allocate (); *(struct predicate *) e->aux = false_predicate (); } n = gimple_switch_num_labels (last); @@ -1932,7 +1929,7 @@ compute_bb_predicates (struct cgraph_node *node, /* Entry block is always executable. */ ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux - = pool_alloc (edge_predicate_pool); + = edge_predicate_pool.allocate (); *(struct predicate *) ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux = true_predicate (); @@ -1968,7 +1965,7 @@ compute_bb_predicates (struct cgraph_node *node, if (!bb->aux) { done = false; - bb->aux = pool_alloc (edge_predicate_pool); + bb->aux = edge_predicate_pool.allocate (); *((struct predicate *) bb->aux) = p; } else if (!predicates_equal_p (&p, (struct predicate *) bb->aux)) @@ -2864,12 +2861,12 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early) edge_iterator ei; if (bb->aux) - pool_free (edge_predicate_pool, bb->aux); + edge_predicate_pool.remove ((predicate *)bb->aux); bb->aux = NULL; FOR_EACH_EDGE (e, ei, bb->succs) { if (e->aux) - pool_free (edge_predicate_pool, e->aux); + edge_predicate_pool.remove ((predicate *) e->aux); e->aux = NULL; } } @@ -4460,7 +4457,5 @@ inline_free_summary (void) inline_summaries->release (); inline_summaries = NULL; inline_edge_summary_vec.release (); - if (edge_predicate_pool) - free_alloc_pool (edge_predicate_pool); - edge_predicate_pool = 0; + edge_predicate_pool.release (); }