cgraph.c (cgraph_add_new_function): When in expansion state, do lowering.

* cgraph.c (cgraph_add_new_function): When in expansion state, do lowering.

	* method.c: Include cgraph.h.
	(use_thunk): Use cgraph_add_new_function instead of calling backend directly.

From-SVN: r136892
This commit is contained in:
Jan Hubicka 2008-06-18 15:39:43 +02:00 committed by Jan Hubicka
parent b7352f3f9a
commit ff2c88a561
4 changed files with 28 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2008-06-16 Jan Hubicka <jh@suse.cz>
* cgraph.c (cgraph_add_new_function): When in expansion state, do
lowering.
2008-06-16 Jan Hubicka <jh@suse.cz>
* tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.

View File

@ -1052,6 +1052,21 @@ cgraph_add_new_function (tree fndecl, bool lowered)
node->local.local = false;
node->local.finalized = true;
node->reachable = node->needed = true;
if (!lowered && cgraph_state == CGRAPH_STATE_EXPANSION)
{
push_cfun (DECL_STRUCT_FUNCTION (fndecl));
current_function_decl = fndecl;
tree_register_cfg_hooks ();
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);
bitmap_obstack_release (NULL);
pop_cfun ();
current_function_decl = NULL;
lowered = true;
}
if (lowered)
node->lowered = true;
node->next_needed = cgraph_new_nodes;

View File

@ -1,3 +1,9 @@
2008-06-16 Jan Hubicka <jh@suse.cz>
* method.c: Include cgraph.h.
(use_thunk): Use cgraph_add_new_function instead of calling backend
directly.
2008-06-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* parser.c: Fix comment typo.

View File

@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "tree-pass.h"
#include "diagnostic.h"
#include "cgraph.h"
/* Various flags to control the mangling process. */
@ -523,8 +524,7 @@ use_thunk (tree thunk_fndecl, bool emit_p)
pop_deferring_access_checks ();
thunk_fndecl = finish_function (0);
tree_lowering_passes (thunk_fndecl);
tree_rest_of_compilation (thunk_fndecl);
cgraph_add_new_function (thunk_fndecl, false);
}
pop_from_top_level ();