tree-inline.c (expand_call_inline): Do not check that destination node is analyzed.

2011-03-28  Martin Jambor  <mjambor@suse.cz>

	* tree-inline.c (expand_call_inline): Do not check that destination
	node is analyzed.
	(optimize_inline_calls): Assert that destination node is analyzed.
	* cgraph.c (cgraph_add_new_function): Call cgraph_analyze_function, do
	not call tree_lowering_passes.
	* cgraph.h (cgraph_analyze_function): Declare.
	* cgraphunit.c (cgraph_analyze_function): Make public.

From-SVN: r171602
This commit is contained in:
Martin Jambor 2011-03-28 14:15:44 +02:00 committed by Martin Jambor
parent aa53e58b92
commit 322dd85963
5 changed files with 17 additions and 9 deletions

View File

@ -1,3 +1,13 @@
2011-03-28 Martin Jambor <mjambor@suse.cz>
* tree-inline.c (expand_call_inline): Do not check that destination
node is analyzed.
(optimize_inline_calls): Assert that destination node is analyzed.
* cgraph.c (cgraph_add_new_function): Call cgraph_analyze_function, do
not call tree_lowering_passes.
* cgraph.h (cgraph_analyze_function): Declare.
* cgraphunit.c (cgraph_analyze_function): Make public.
2011-03-28 Joseph Myers <joseph@codesourcery.com>
* config/sparc/sparc-opts.h: New.

View File

@ -2495,11 +2495,13 @@ cgraph_add_new_function (tree fndecl, bool lowered)
case CGRAPH_STATE_FINISHED:
/* At the very end of compilation we have to do all the work up
to expansion. */
node = cgraph_node (fndecl);
if (lowered)
node->lowered = true;
cgraph_analyze_function (node);
push_cfun (DECL_STRUCT_FUNCTION (fndecl));
current_function_decl = fndecl;
gimple_register_cfg_hooks ();
if (!lowered)
tree_lowering_passes (fndecl);
bitmap_obstack_initialize (NULL);
if (!gimple_in_ssa_p (DECL_STRUCT_FUNCTION (fndecl)))
execute_pass_list (pass_early_local_passes.pass.sub);

View File

@ -618,6 +618,7 @@ bool varpool_used_from_object_file_p (struct varpool_node *node);
extern FILE *cgraph_dump_file;
void cgraph_finalize_function (tree, bool);
void cgraph_mark_if_needed (tree);
void cgraph_analyze_function (struct cgraph_node *);
void cgraph_finalize_compilation_unit (void);
void cgraph_optimize (void);
void cgraph_mark_needed_node (struct cgraph_node *);

View File

@ -143,7 +143,6 @@ static void cgraph_expand_all_functions (void);
static void cgraph_mark_functions_to_output (void);
static void cgraph_expand_function (struct cgraph_node *);
static void cgraph_output_pending_asms (void);
static void cgraph_analyze_function (struct cgraph_node *);
FILE *cgraph_dump_file;
@ -773,7 +772,7 @@ cgraph_output_pending_asms (void)
}
/* Analyze the function scheduled to be output. */
static void
void
cgraph_analyze_function (struct cgraph_node *node)
{
tree save = current_function_decl;

View File

@ -3766,11 +3766,6 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
if (gimple_code (stmt) != GIMPLE_CALL)
goto egress;
/* Objective C and fortran still calls tree_rest_of_compilation directly.
Kill this check once this is fixed. */
if (!id->dst_node->analyzed)
goto egress;
cg_edge = cgraph_edge (id->dst_node, stmt);
gcc_checking_assert (cg_edge);
/* First, see if we can figure out what function is being called.
@ -4203,6 +4198,7 @@ optimize_inline_calls (tree fn)
memset (&id, 0, sizeof (id));
id.src_node = id.dst_node = cgraph_node (fn);
gcc_assert (id.dst_node->analyzed);
id.dst_fn = fn;
/* Or any functions that aren't finished yet. */
if (current_function_decl)