aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-10-05 18:15:00 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2010-10-05 16:15:00 +0000
commit5806d9ac5dc72814e806e61773077a263a6fc728 (patch)
tree8c70ad751de7fe001897bd498be2b112a9c23246
parent033b71cea1b4098c37cfd67f3213c4a917caa495 (diff)
downloadgcc-5806d9ac5dc72814e806e61773077a263a6fc728.zip
gcc-5806d9ac5dc72814e806e61773077a263a6fc728.tar.gz
gcc-5806d9ac5dc72814e806e61773077a263a6fc728.tar.bz2
cgraphunit.c (assemble_function): Output thunks and aliases before the function itself.
* cgraphunit.c (assemble_function): Output thunks and aliases before the function itself. From-SVN: r164994
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cgraphunit.c19
2 files changed, 15 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cf45a53..924eb98 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-29 Jan Hubicka <jh@suse.cz>
+
+ * cgraphunit.c (assemble_function): Output thunks and aliases before
+ the function itself.
+
2010-09-29 Hariharan Sandanagobalane <hariharan@picochip.com>
* config/picochip/picochip.c (picochip_option_override): Disable
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index b51a71c..e9d1f1d 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1470,15 +1470,6 @@ cgraph_expand_function (struct cgraph_node *node)
announce_function (decl);
node->process = 0;
-
- gcc_assert (node->lowered);
-
- /* Generate RTL for the body of DECL. */
- tree_rest_of_compilation (decl);
-
- /* Make sure that BE didn't give up on compiling. */
- gcc_assert (TREE_ASM_WRITTEN (decl));
- current_function_decl = NULL;
if (node->same_body)
{
struct cgraph_node *alias, *next;
@@ -1498,7 +1489,17 @@ cgraph_expand_function (struct cgraph_node *node)
assemble_thunk (alias);
}
node->alias = saved_alias;
+ cgraph_process_new_functions ();
}
+
+ gcc_assert (node->lowered);
+
+ /* Generate RTL for the body of DECL. */
+ tree_rest_of_compilation (decl);
+
+ /* Make sure that BE didn't give up on compiling. */
+ gcc_assert (TREE_ASM_WRITTEN (decl));
+ current_function_decl = NULL;
gcc_assert (!cgraph_preserve_function_body_p (decl));
cgraph_release_function_body (node);
/* Eliminate all call edges. This is important so the GIMPLE_CALL no longer