cgraph.c: Update overall comment; fix vertical spacing.
* cgraph.c: Update overall comment; fix vertical spacing. * ipa-inline.c (cgraph_decide_inlining): Remove now redundant check. From-SVN: r120071
This commit is contained in:
parent
68e56cc4a2
commit
0550e7b7aa
@ -1,4 +1,9 @@
|
||||
2006-12-19 Jan Hubicka <jh@suse.cz>
|
||||
2006-12-20 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* cgraph.c: Update overall comment; fix vertical spacing.
|
||||
* ipa-inline.c (cgraph_decide_inlining): Remove now redundant check.
|
||||
|
||||
2006-12-20 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* cgraph.h (FOR_EACH_STATIC_VARIABLE, FOR_EACH_STATIC_INITIALIZER): New
|
||||
macros.
|
||||
|
17
gcc/cgraph.c
17
gcc/cgraph.c
@ -28,19 +28,11 @@ The callgraph:
|
||||
sharing.
|
||||
|
||||
The call-graph consist of nodes and edges represented via linked lists.
|
||||
Each function (external or not) corresponds to the unique node (in
|
||||
contrast to tree DECL nodes where we can have multiple nodes for each
|
||||
function).
|
||||
Each function (external or not) corresponds to the unique node.
|
||||
|
||||
The mapping from declarations to call-graph nodes is done using hash table
|
||||
based on DECL_ASSEMBLER_NAME, so it is essential for assembler name to
|
||||
not change once the declaration is inserted into the call-graph.
|
||||
The call-graph nodes are created lazily using cgraph_node function when
|
||||
called for unknown declaration.
|
||||
|
||||
When built, there is one edge for each direct call. It is possible that
|
||||
the reference will be later optimized out. The call-graph is built
|
||||
conservatively in order to make conservative data flow analysis possible.
|
||||
based on DECL_UID. The call-graph nodes are created lazily using
|
||||
cgraph_node function when called for unknown declaration.
|
||||
|
||||
The callgraph at the moment does not represent indirect calls or calls
|
||||
from other compilation unit. Flag NEEDED is set for each node that may
|
||||
@ -156,6 +148,7 @@ eq_node (const void *p1, const void *p2)
|
||||
}
|
||||
|
||||
/* Allocate new callgraph node and insert it into basic data structures. */
|
||||
|
||||
static struct cgraph_node *
|
||||
cgraph_create_node (void)
|
||||
{
|
||||
@ -175,6 +168,7 @@ cgraph_create_node (void)
|
||||
}
|
||||
|
||||
/* Return cgraph node assigned to DECL. Create new one when needed. */
|
||||
|
||||
struct cgraph_node *
|
||||
cgraph_node (tree decl)
|
||||
{
|
||||
@ -295,6 +289,7 @@ cgraph_edge (struct cgraph_node *node, tree call_stmt)
|
||||
}
|
||||
|
||||
/* Change call_smtt of edge E to NEW_STMT. */
|
||||
|
||||
void
|
||||
cgraph_set_call_stmt (struct cgraph_edge *e, tree new_stmt)
|
||||
{
|
||||
|
@ -1041,48 +1041,36 @@ cgraph_decide_inlining (void)
|
||||
&& node->local.inlinable && node->callers->inline_failed
|
||||
&& !DECL_EXTERNAL (node->decl) && !DECL_COMDAT (node->decl))
|
||||
{
|
||||
bool ok = true;
|
||||
struct cgraph_node *node1;
|
||||
if (dump_file)
|
||||
{
|
||||
fprintf (dump_file,
|
||||
"\nConsidering %s %i insns.\n",
|
||||
cgraph_node_name (node), node->global.insns);
|
||||
fprintf (dump_file,
|
||||
" Called once from %s %i insns.\n",
|
||||
cgraph_node_name (node->callers->caller),
|
||||
node->callers->caller->global.insns);
|
||||
}
|
||||
|
||||
/* Verify that we won't duplicate the caller. */
|
||||
for (node1 = node->callers->caller;
|
||||
node1->callers && !node1->callers->inline_failed
|
||||
&& ok; node1 = node1->callers->caller)
|
||||
if (node1->callers->next_caller || node1->needed)
|
||||
ok = false;
|
||||
if (ok)
|
||||
old_insns = overall_insns;
|
||||
|
||||
if (cgraph_check_inline_limits (node->callers->caller, node,
|
||||
NULL, false))
|
||||
{
|
||||
cgraph_mark_inline (node->callers);
|
||||
if (dump_file)
|
||||
fprintf (dump_file,
|
||||
" Inlined into %s which now has %i insns"
|
||||
" for a net change of %+i insns.\n",
|
||||
cgraph_node_name (node->callers->caller),
|
||||
node->callers->caller->global.insns,
|
||||
overall_insns - old_insns);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dump_file)
|
||||
{
|
||||
fprintf (dump_file,
|
||||
"\nConsidering %s %i insns.\n",
|
||||
cgraph_node_name (node), node->global.insns);
|
||||
fprintf (dump_file,
|
||||
" Called once from %s %i insns.\n",
|
||||
cgraph_node_name (node->callers->caller),
|
||||
node->callers->caller->global.insns);
|
||||
}
|
||||
|
||||
old_insns = overall_insns;
|
||||
|
||||
if (cgraph_check_inline_limits (node->callers->caller, node,
|
||||
NULL, false))
|
||||
{
|
||||
cgraph_mark_inline (node->callers);
|
||||
if (dump_file)
|
||||
fprintf (dump_file,
|
||||
" Inlined into %s which now has %i insns"
|
||||
" for a net change of %+i insns.\n",
|
||||
cgraph_node_name (node->callers->caller),
|
||||
node->callers->caller->global.insns,
|
||||
overall_insns - old_insns);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dump_file)
|
||||
fprintf (dump_file,
|
||||
" Inline limit reached, not inlined.\n");
|
||||
}
|
||||
fprintf (dump_file,
|
||||
" Inline limit reached, not inlined.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user