re PR middle-end/48668 (COMDAT Group signature not emitted in group)
authorJan Hubicka <jh@suse.cz>
Sun, 16 Oct 2011 09:02:33 +0000 (11:02 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 16 Oct 2011 09:02:33 +0000 (09:02 +0000)
PR target/48668
PR target/50689
* cgraphunit.c (cgraph_expand_function): Expand thunks and alises
after function body.

From-SVN: r180053

gcc/ChangeLog
gcc/cgraphunit.c

index 22e2f77..3334608 100644 (file)
@@ -1,3 +1,10 @@
+2011-10-15  Jan Hubicka  <jh@suse.cz>
+
+       PR target/48668
+       PR target/50689
+       * cgraphunit.c (cgraph_expand_function): Expand thunks and alises
+       after function body.
+
 2011-10-15  Richard Henderson  <rth@redhat.com>
 
        * tree-vect-slp.c: Include langhooks.h.
index c75c130..96c910c 100644 (file)
@@ -1798,7 +1798,6 @@ cgraph_expand_function (struct cgraph_node *node)
 
   announce_function (decl);
   node->process = 0;
-  assemble_thunks_and_aliases (node);
   gcc_assert (node->lowered);
 
   /* Generate RTL for the body of DECL.  */
@@ -1808,6 +1807,14 @@ cgraph_expand_function (struct cgraph_node *node)
   gcc_assert (TREE_ASM_WRITTEN (decl));
   current_function_decl = NULL;
   gcc_assert (!cgraph_preserve_function_body_p (node));
+
+  /* It would make a lot more sense to output thunks before function body to get more
+     forward and lest backwarding jumps.  This is however would need solving problem
+     with comdats. See PR48668.  Also aliases must come after function itself to
+     make one pass assemblers, like one on AIX happy.  See PR 50689.
+     FIXME: Perhaps thunks should be move before function IFF they are not in comdat
+     groups.  */
+  assemble_thunks_and_aliases (node);
   cgraph_release_function_body (node);
   /* Eliminate all call edges.  This is important so the GIMPLE_CALL no longer
      points to the dead function body.  */