diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-02-08 22:08:44 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-02-08 21:08:44 +0000 |
commit | 953aad61517913685a0848cdb6c3078a4a7a43f2 (patch) | |
tree | 93581bf5a3951c0e31978c7516fe277a75b60a7e | |
parent | ead0ba5768adbf6a275dff580a1bf3e06d677bc8 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-visibility.c | 23 |
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); } |