PR ipa/63566
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 8 Feb 2015 21:08:44 +0000 (21:08 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 8 Feb 2015 21:08:44 +0000 (21:08 +0000)
* ipa-visibility.c (cgraph_node::non_local_p): Accept aliases.
(cgraph_node::local_p): Remove thunk related FIXME.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220521 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ipa-visibility.c

index 83019f9..6815c20 100644 (file)
@@ -1,6 +1,12 @@
 2015-02-08  Jan Hubicka  <hubicka@ucw.cz>
 
        PR ipa/63566 
+       * ipa-visibility.c (cgraph_node::non_local_p): Accept aliases.
+       (cgraph_node::local_p): Remove thunk related FIXME.
+
+2015-02-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/63566 
        * i386.c (ix86_function_regparm): Look through aliases to see if callee
        is local and optimized.
        (ix86_function_sseregparm): Likewise; also use target's SSE math
index 71894af..00b28e6 100644 (file)
@@ -104,14 +104,15 @@ along with GCC; see the file COPYING3.  If not see
 bool
 cgraph_node::non_local_p (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
 {
-   /* FIXME: Aliases can be local, but i386 gets thunks wrong then.  */
-   return !(node->only_called_directly_or_aliased_p ()
-           && !node->has_aliases_p ()
-           && node->definition
-           && !DECL_EXTERNAL (node->decl)
-           && !node->externally_visible
-           && !node->used_from_other_partition
-           && !node->in_other_partition);
+  return !(node->only_called_directly_or_aliased_p ()
+          /* i386 would need update to output thunk with locak calling
+             ocnvetions.  */
+          && !node->thunk.thunk_p
+          && node->definition
+          && !DECL_EXTERNAL (node->decl)
+          && !node->externally_visible
+          && !node->used_from_other_partition
+          && !node->in_other_partition);
 }
 
 /* Return true when function can be marked local.  */
@@ -121,12 +122,10 @@ cgraph_node::local_p (void)
 {
    cgraph_node *n = ultimate_alias_target ();
 
-   /* FIXME: thunks can be considered local, but we need prevent i386
-      from attempting to change calling convention of them.  */
    if (n->thunk.thunk_p)
-     return false;
+     return n->callees->callee->local_p ();
    return !n->call_for_symbol_thunks_and_aliases (cgraph_node::non_local_p,
-                                               NULL, true);
+                                                 NULL, true);
                                        
 }