aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cgraph.c15
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/method.c4
4 files changed, 28 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c4189f8..32fb7e8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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.
2008-06-16 Daniel Jacobowitz <dan@codesourcery.com>
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index e6910b5..df214d1 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -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;
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index bd2c0de..636ee6a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 45358b2..bd63d0c 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -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 ();