aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-02-08 22:08:44 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-02-08 21:08:44 +0000
commit953aad61517913685a0848cdb6c3078a4a7a43f2 (patch)
tree93581bf5a3951c0e31978c7516fe277a75b60a7e /gcc
parentead0ba5768adbf6a275dff580a1bf3e06d677bc8 (diff)
downloadgcc-953aad61517913685a0848cdb6c3078a4a7a43f2.zip
gcc-953aad61517913685a0848cdb6c3078a4a7a43f2.tar.gz
gcc-953aad61517913685a0848cdb6c3078a4a7a43f2.tar.bz2
re PR ipa/63566 (i686 bootstrap fails: ICE RTL flag check: INSN_UID used with unexpected rtx code 'set' in INSN_UID, at rtl.h:1326)
PR ipa/63566 * ipa-visibility.c (cgraph_node::non_local_p): Accept aliases. (cgraph_node::local_p): Remove thunk related FIXME. From-SVN: r220521
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-visibility.c23
2 files changed, 17 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 83019f9..6815c20 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c
index 71894af..00b28e6 100644
--- a/gcc/ipa-visibility.c
+++ b/gcc/ipa-visibility.c
@@ -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);
}