Commit 953aad61 by Jan Hubicka Committed by Jan Hubicka

re PR ipa/63566 (i686 bootstrap fails: ICE RTL flag check: INSN_UID used with…

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
parent ead0ba57
2015-02-08 Jan Hubicka <hubicka@ucw.cz> 2015-02-08 Jan Hubicka <hubicka@ucw.cz>
PR ipa/63566 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 * i386.c (ix86_function_regparm): Look through aliases to see if callee
is local and optimized. is local and optimized.
(ix86_function_sseregparm): Likewise; also use target's SSE math (ix86_function_sseregparm): Likewise; also use target's SSE math
......
...@@ -104,14 +104,15 @@ along with GCC; see the file COPYING3. If not see ...@@ -104,14 +104,15 @@ along with GCC; see the file COPYING3. If not see
bool bool
cgraph_node::non_local_p (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED) 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 ()
return !(node->only_called_directly_or_aliased_p () /* i386 would need update to output thunk with locak calling
&& !node->has_aliases_p () ocnvetions. */
&& node->definition && !node->thunk.thunk_p
&& !DECL_EXTERNAL (node->decl) && node->definition
&& !node->externally_visible && !DECL_EXTERNAL (node->decl)
&& !node->used_from_other_partition && !node->externally_visible
&& !node->in_other_partition); && !node->used_from_other_partition
&& !node->in_other_partition);
} }
/* Return true when function can be marked local. */ /* Return true when function can be marked local. */
...@@ -121,12 +122,10 @@ cgraph_node::local_p (void) ...@@ -121,12 +122,10 @@ cgraph_node::local_p (void)
{ {
cgraph_node *n = ultimate_alias_target (); 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) 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, return !n->call_for_symbol_thunks_and_aliases (cgraph_node::non_local_p,
NULL, true); NULL, true);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment