From patchwork Tue Aug 26 20:24:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Bosscher X-Patchwork-Id: 383209 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 014411400D2 for ; Wed, 27 Aug 2014 06:25:30 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; q= dns; s=default; b=mWBqQOtPf1rPN+Ogu7e5wPoLyeP3Yk2tg9/KIZBG83xFw6 ckuqJLYrEPav0+rNrHBNK+Ze1ktIFHmLk97NGOMcDIpdVY5Hw/TQslHkc+ldedGg fnXEfJkQeET2HLU0B4+yXWpwNqyoyG76C5nczhRwt+h16xtaggzM7CpU6Imrc= 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 :mime-version:from:date:message-id:subject:to:content-type; s= default; bh=rsrKDhKYBZLsSYl1CiLlbj0/Bwg=; b=jjs+sl9TNPCP1HlKpVKD RXzEVbI6cGW6ioonos/wRG0lCgb1mf7BZeBDLw9MhnN8oUHYTT1S+VCYJhvYDtGS xp+4IoDOdmFeIUxFNOCIXNUowkDmv1CVAnUk0YuG3Yw1stDIzrHuk5lJ1ULdrPjk vPwoCeoluendYvl2iHpFt0E= Received: (qmail 11112 invoked by alias); 26 Aug 2014 20:25:23 -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 11102 invoked by uid 89); 26 Aug 2014 20:25:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-yk0-f181.google.com Received: from mail-yk0-f181.google.com (HELO mail-yk0-f181.google.com) (209.85.160.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 26 Aug 2014 20:25:21 +0000 Received: by mail-yk0-f181.google.com with SMTP id q200so11840016ykb.40 for ; Tue, 26 Aug 2014 13:25:19 -0700 (PDT) X-Received: by 10.236.65.38 with SMTP id e26mr3809269yhd.164.1409084719316; Tue, 26 Aug 2014 13:25:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.170.114.197 with HTTP; Tue, 26 Aug 2014 13:24:39 -0700 (PDT) From: Steven Bosscher Date: Tue, 26 Aug 2014 22:24:39 +0200 Message-ID: Subject: [patch] Why xstrdup cgraph node names for dumpfiles? To: Martin Jambor , GCC Patches , Jan Hubicha X-IsSubscribed: yes Hello Martin, Honza, I noticed most of the cgraph and IPA files use xstrdup for cgraph node names when printing to dump_file. Very leaky... What is the reason for all those xstrdups? I couldn't think of any. Thoughts? Ciao! Steven * cgraph.c (cgraph_node::get_create): Don't xstrdup cgraph node names. (cgraph_edge::make_speculative): Likewise. (cgraph_edge::resolve_speculation): Likewise. (cgraph_edge::redirect_call_stmt_to_callee): Likewise. (cgraph_node::dump): Likewise. * cgraphclones.c (symbol_table::materialize_all_clones): Likewise. * ipa-cp.c (perhaps_add_new_callers): Likewise. * ipa-inline.c (report_inline_failed_reason): Likewise. (want_early_inline_function_p): Likewise. (edge_badness): Likewise. (update_edge_key): Likewise. (flatten_function): Likewise. (inline_always_inline_functions): Likewise. (early_inline_small_functions): Likewise. * ipa-profile.c (ipa_profile): Likewise. * ipa-prop.c (ipa_print_node_jump_functions): Likewise. (ipa_make_edge_direct_to_target): Likewise. (remove_described_reference): Likewise. (propagate_controlled_uses): Likewise. * ipa-utils.c (ipa_merge_profiles): Likewise. * tree-sra.c (convert_callers_for_node): Likewise. Index: cgraph.c =================================================================== --- cgraph.c (revision 214545) +++ cgraph.c (working copy) @@ -489,11 +489,11 @@ cgraph_node::get_create (tree decl) if (dump_file) fprintf (dump_file, "Introduced new external node " "(%s/%i) and turned into root of the clone tree.\n", - xstrdup (node->name ()), node->order); + node->name (), node->order); } else if (dump_file) fprintf (dump_file, "Introduced new external node " - "(%s/%i).\n", xstrdup (node->name ()), + "(%s/%i).\n", node->name (), node->order); return node; } @@ -1036,8 +1036,8 @@ cgraph_edge::make_speculative (cgraph_node *n2, gc { fprintf (dump_file, "Indirect call -> speculative call" " %s/%i => %s/%i\n", - xstrdup (n->name ()), n->order, - xstrdup (n2->name ()), n2->order); + n->name (), n->order, + n2->name (), n2->order); } speculative = true; e2 = n->create_edge (n2, call_stmt, direct_count, direct_frequency); @@ -1155,16 +1155,16 @@ cgraph_edge::resolve_speculation (tree callee_decl { fprintf (dump_file, "Speculative indirect call %s/%i => %s/%i has " "turned out to have contradicting known target ", - xstrdup (edge->caller->name ()), edge->caller->order, - xstrdup (e2->callee->name ()), e2->callee->order); + edge->caller->name (), edge->caller->order, + e2->callee->name (), e2->callee->order); print_generic_expr (dump_file, callee_decl, 0); fprintf (dump_file, "\n"); } else { fprintf (dump_file, "Removing speculative call %s/%i => %s/%i\n", - xstrdup (edge->caller->name ()), edge->caller->order, - xstrdup (e2->callee->name ()), e2->callee->order); + edge->caller->name (), edge->caller->order, + e2->callee->name (), e2->callee->order); } } } @@ -1284,9 +1284,9 @@ cgraph_edge::redirect_call_stmt_to_callee (void) if (dump_file) fprintf (dump_file, "Not expanding speculative call of %s/%i -> %s/%i\n" "Type mismatch.\n", - xstrdup (e->caller->name ()), + e->caller->name (), e->caller->order, - xstrdup (e->callee->name ()), + e->callee->name (), e->callee->order); e = e->resolve_speculation (); /* We are producing the final function body and will throw away the @@ -1303,9 +1303,9 @@ cgraph_edge::redirect_call_stmt_to_callee (void) fprintf (dump_file, "Expanding speculative call of %s/%i -> %s/%i count:" "%"PRId64"\n", - xstrdup (e->caller->name ()), + e->caller->name (), e->caller->order, - xstrdup (e->callee->name ()), + e->callee->name (), e->callee->order, (int64_t)e->count); gcc_assert (e2->speculative); @@ -1353,8 +1353,8 @@ cgraph_edge::redirect_call_stmt_to_callee (void) if (symtab->dump_file) { fprintf (symtab->dump_file, "updating call of %s/%i -> %s/%i: ", - xstrdup (e->caller->name ()), e->caller->order, - xstrdup (e->callee->name ()), e->callee->order); + e->caller->name (), e->caller->order, + e->callee->name (), e->callee->order); print_gimple_stmt (symtab->dump_file, e->call_stmt, 0, dump_flags); if (e->callee->clone.combined_args_to_skip) { @@ -1870,9 +1870,9 @@ cgraph_node::dump (FILE *f) if (global.inlined_to) fprintf (f, " Function %s/%i is inline copy in %s/%i\n", - xstrdup (name ()), + name (), order, - xstrdup (global.inlined_to->name ()), + global.inlined_to->name (), global.inlined_to->order); if (clone_of) fprintf (f, " Clone of %s/%i\n", Index: cgraphclones.c =================================================================== --- cgraphclones.c (revision 214545) +++ cgraphclones.c (working copy) @@ -1053,8 +1053,8 @@ symbol_table::materialize_all_clones (void) if (symtab->dump_file) { fprintf (symtab->dump_file, "cloning %s to %s\n", - xstrdup (node->clone_of->name ()), - xstrdup (node->name ())); + node->clone_of->name (), + node->name ()); if (node->clone.tree_map) { unsigned int i; Index: ipa-cp.c =================================================================== --- ipa-cp.c (revision 214545) +++ ipa-cp.c (working copy) @@ -3362,9 +3362,9 @@ perhaps_add_new_callers (struct cgraph_node *node, if (dump_file) fprintf (dump_file, " - adding an extra caller %s/%i" " of %s/%i\n", - xstrdup (cs->caller->name ()), + cs->caller->name (), cs->caller->order, - xstrdup (val->spec_node->name ()), + val->spec_node->name (), val->spec_node->order); cs->redirect_callee (val->spec_node); Index: ipa-inline.c =================================================================== --- ipa-inline.c (revision 214545) +++ ipa-inline.c (working copy) @@ -230,8 +230,8 @@ report_inline_failed_reason (struct cgraph_edge *e if (dump_file) { fprintf (dump_file, " not inlinable: %s/%i -> %s/%i, %s\n", - xstrdup (e->caller->name ()), e->caller->order, - xstrdup (e->callee->name ()), e->callee->order, + e->caller->name (), e->caller->order, + e->callee->name (), e->callee->order, cgraph_inline_failed_string (e->inline_failed)); } } @@ -469,9 +469,9 @@ want_early_inline_function_p (struct cgraph_edge * if (dump_file) fprintf (dump_file, " will not early inline: %s/%i->%s/%i, " "call is cold and code would grow by %i\n", - xstrdup (e->caller->name ()), + e->caller->name (), e->caller->order, - xstrdup (callee->name ()), callee->order, + callee->name (), callee->order, growth); want_inline = false; } @@ -480,9 +480,9 @@ want_early_inline_function_p (struct cgraph_edge * if (dump_file) fprintf (dump_file, " will not early inline: %s/%i->%s/%i, " "growth %i exceeds --param early-inlining-insns\n", - xstrdup (e->caller->name ()), + e->caller->name (), e->caller->order, - xstrdup (callee->name ()), callee->order, + callee->name (), callee->order, growth); want_inline = false; } @@ -493,9 +493,9 @@ want_early_inline_function_p (struct cgraph_edge * fprintf (dump_file, " will not early inline: %s/%i->%s/%i, " "growth %i exceeds --param early-inlining-insns " "divided by number of calls\n", - xstrdup (e->caller->name ()), + e->caller->name (), e->caller->order, - xstrdup (callee->name ()), callee->order, + callee->name (), callee->order, growth); want_inline = false; } @@ -911,9 +911,9 @@ edge_badness (struct cgraph_edge *edge, bool dump) if (dump) { fprintf (dump_file, " Badness calculation for %s/%i -> %s/%i\n", - xstrdup (edge->caller->name ()), + edge->caller->name (), edge->caller->order, - xstrdup (callee->name ()), + callee->name (), edge->callee->order); fprintf (dump_file, " size growth %i, time %i ", growth, @@ -1078,9 +1078,9 @@ update_edge_key (fibheap_t heap, struct cgraph_edg { fprintf (dump_file, " decreasing badness %s/%i -> %s/%i, %i to %i\n", - xstrdup (edge->caller->name ()), + edge->caller->name (), edge->caller->order, - xstrdup (edge->callee->name ()), + edge->callee->name (), edge->callee->order, (int)n->key, badness); @@ -1095,9 +1095,9 @@ update_edge_key (fibheap_t heap, struct cgraph_edg { fprintf (dump_file, " enqueuing call %s/%i -> %s/%i, badness %i\n", - xstrdup (edge->caller->name ()), + edge->caller->name (), edge->caller->order, - xstrdup (edge->callee->name ()), + edge->callee->name (), edge->callee->order, badness); } @@ -1885,8 +1885,8 @@ flatten_function (struct cgraph_node *node, bool e if (dump_file) fprintf (dump_file, "Not inlining %s into %s to avoid cycle.\n", - xstrdup (callee->name ()), - xstrdup (e->caller->name ())); + callee->name (), + e->caller->name ()); e->inline_failed = CIF_RECURSIVE_INLINING; continue; } @@ -1926,8 +1926,8 @@ flatten_function (struct cgraph_node *node, bool e recursing through the original node if the node was cloned. */ if (dump_file) fprintf (dump_file, " Inlining %s into %s.\n", - xstrdup (callee->name ()), - xstrdup (e->caller->name ())); + callee->name (), + e->caller->name ()); orig_callee = callee; inline_call (e, true, NULL, NULL, false); if (e->callee != orig_callee) @@ -2305,8 +2305,8 @@ inline_always_inline_functions (struct cgraph_node if (dump_file) fprintf (dump_file, " Inlining %s into %s (always_inline).\n", - xstrdup (e->callee->name ()), - xstrdup (e->caller->name ())); + e->callee->name (), + e->caller->name ()); inline_call (e, true, NULL, NULL, false); inlined = true; } @@ -2357,8 +2357,8 @@ early_inline_small_functions (struct cgraph_node * if (dump_file) fprintf (dump_file, " Inlining %s into %s.\n", - xstrdup (callee->name ()), - xstrdup (e->caller->name ())); + callee->name (), + e->caller->name ()); inline_call (e, true, NULL, NULL, true); inlined = true; } Index: ipa-profile.c =================================================================== --- ipa-profile.c (revision 214545) +++ ipa-profile.c (working copy) @@ -590,8 +590,8 @@ ipa_profile (void) { fprintf (dump_file, "Indirect call -> direct call from" " other module %s/%i => %s/%i, prob %3.2f\n", - xstrdup (n->name ()), n->order, - xstrdup (n2->name ()), n2->order, + n->name (), n->order, + n2->name (), n2->order, e->indirect_info->common_target_probability / (float)REG_BR_PROB_BASE); } Index: ipa-prop.c =================================================================== --- ipa-prop.c (revision 214545) +++ ipa-prop.c (working copy) @@ -384,8 +384,8 @@ ipa_print_node_jump_functions (FILE *f, struct cgr continue; fprintf (f, " callsite %s/%i -> %s/%i : \n", - xstrdup (node->name ()), node->order, - xstrdup (cs->callee->name ()), + node->name (), node->order, + cs->callee->name (), cs->callee->order); ipa_print_node_jump_functions_for_edge (f, cs); } @@ -2857,9 +2857,9 @@ ipa_make_edge_direct_to_target (struct cgraph_edge if (dump_file) fprintf (dump_file, "ipa-prop: Discovered call to a known target " "(%s/%i -> %s/%i) but can not refer to it. Giving up.\n", - xstrdup (ie->caller->name ()), + ie->caller->name (), ie->caller->order, - xstrdup (ie->callee->name ()), + ie->callee->name (), ie->callee->order); return NULL; } @@ -2880,9 +2880,9 @@ ipa_make_edge_direct_to_target (struct cgraph_edge fprintf (dump_file, "ipa-prop: Discovered %s call to a known target " "(%s/%i -> %s/%i), for stmt ", ie->indirect_info->polymorphic ? "a virtual" : "an indirect", - xstrdup (ie->caller->name ()), + ie->caller->name (), ie->caller->order, - xstrdup (callee->name ()), + callee->name (), callee->order); if (ie->call_stmt) print_gimple_stmt (dump_file, ie->call_stmt, 2, TDF_SLIM); @@ -2953,8 +2953,8 @@ remove_described_reference (symtab_node *symbol, s to_del->remove_reference (); if (dump_file) fprintf (dump_file, "ipa-prop: Removed a reference from %s/%i to %s.\n", - xstrdup (origin->caller->name ()), - origin->caller->order, xstrdup (symbol->name ())); + origin->caller->name (), + origin->caller->order, symbol->name ()); return true; } @@ -3353,9 +3353,9 @@ propagate_controlled_uses (struct cgraph_edge *cs) if (dump_file) fprintf (dump_file, "ipa-prop: Removing cloning-created " "reference from %s/%i to %s/%i.\n", - xstrdup (new_root->name ()), + new_root->name (), new_root->order, - xstrdup (n->name ()), n->order); + n->name (), n->order); ref->remove_reference (); } } @@ -3394,9 +3394,9 @@ propagate_controlled_uses (struct cgraph_edge *cs) fprintf (dump_file, "ipa-prop: Removing " "cloning-created reference " "from %s/%i to %s/%i.\n", - xstrdup (clone->name ()), + clone->name (), clone->order, - xstrdup (n->name ()), + n->name (), n->order); ref->remove_reference (); } Index: ipa-utils.c =================================================================== --- ipa-utils.c (revision 214545) +++ ipa-utils.c (working copy) @@ -410,8 +410,8 @@ ipa_merge_profiles (struct cgraph_node *dst, if (symtab->dump_file) { fprintf (symtab->dump_file, "Merging profiles of %s/%i to %s/%i\n", - xstrdup (src->name ()), src->order, - xstrdup (dst->name ()), dst->order); + src->name (), src->order, + dst->name (), dst->order); } dst->count += src->count; Index: tree-sra.c =================================================================== --- tree-sra.c (revision 214545) +++ tree-sra.c (working copy) @@ -4828,9 +4828,9 @@ convert_callers_for_node (struct cgraph_node *node if (dump_file) fprintf (dump_file, "Adjusting call %s/%i -> %s/%i\n", - xstrdup (cs->caller->name ()), + cs->caller->name (), cs->caller->order, - xstrdup (cs->callee->name ()), + cs->callee->name (), cs->callee->order); ipa_modify_call_arguments (cs, cs->call_stmt, *adjustments);