This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix whopr -fdump-ipa-all
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 20 Apr 2010 22:43:51 +0200
- Subject: Fix whopr -fdump-ipa-all
Hi,
this patch makes WPA -fdump-ipa-all to not ICE and be useful.
The first hunk also adds assembler names into callgraph dumps that are
useful for debugging.
Bootstrapped/regtested x86_64-linux, will commit it as obvoius.
* cgraph.c (dump_cgraph_node): Dump also assembler name.
* ipa-inline.c (cgraph_decide_inlining_of_small_functions): Do not ice
at WPA dumping.
(cgraph_decide_inlining): Do not expect callee to be removed in all
cases.
Index: cgraph.c
===================================================================
--- cgraph.c (revision 158563)
+++ cgraph.c (working copy)
@@ -1629,6 +1629,8 @@ dump_cgraph_node (FILE *f, struct cgraph
fprintf (f, "%s/%i(%i)", cgraph_node_name (node), node->uid,
node->pid);
dump_addr (f, " @", (void *)node);
+ if (DECL_ASSEMBLER_NAME_SET_P (node->decl))
+ fprintf (f, " (asm: %s)", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl)));
if (node->global.inlined_to)
fprintf (f, " (inline copy in %s/%i)",
cgraph_node_name (node->global.inlined_to),
Index: ipa-inline.c
===================================================================
--- ipa-inline.c (revision 158563)
+++ ipa-inline.c (working copy)
@@ -1024,8 +1024,9 @@ cgraph_decide_inlining_of_small_function
" Estimated growth after inlined into all callees is %+i insns.\n"
" Estimated badness is %i, frequency %.2f.\n",
cgraph_node_name (edge->caller),
- gimple_filename ((const_gimple) edge->call_stmt),
- gimple_lineno ((const_gimple) edge->call_stmt),
+ flag_wpa ? "unknown"
+ : gimple_filename ((const_gimple) edge->call_stmt),
+ flag_wpa ? -1 : gimple_lineno ((const_gimple) edge->call_stmt),
cgraph_estimate_growth (edge->callee),
badness,
edge->frequency / (double)CGRAPH_FREQ_BASE);
@@ -1200,8 +1201,9 @@ cgraph_decide_inlining_of_small_function
" Estimated growth after inlined into all callees is %+i insns.\n"
" Estimated badness is %i, frequency %.2f.\n",
cgraph_node_name (edge->caller),
- gimple_filename ((const_gimple) edge->call_stmt),
- gimple_lineno ((const_gimple) edge->call_stmt),
+ flag_wpa ? "unknown"
+ : gimple_filename ((const_gimple) edge->call_stmt),
+ flag_wpa ? -1 : gimple_lineno ((const_gimple) edge->call_stmt),
cgraph_estimate_growth (edge->callee),
badness,
edge->frequency / (double)CGRAPH_FREQ_BASE);
@@ -1416,13 +1418,14 @@ cgraph_decide_inlining (void)
if (cgraph_check_inline_limits (node->callers->caller, node,
&reason, false))
{
+ struct cgraph_node *caller = node->callers->caller;
cgraph_mark_inline (node->callers);
if (dump_file)
fprintf (dump_file,
" Inlined into %s which now has %i size"
" for a net change of %+i size.\n",
- cgraph_node_name (node->callers->caller),
- node->callers->caller->global.size,
+ cgraph_node_name (caller),
+ caller->global.size,
overall_size - old_size);
}
else