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:
parent
aa53e58b92
commit
322dd85963
@ -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.
|
||||
|
@ -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);
|
||||
|
@ -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 *);
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user