gimple-fold.c (can_refer_decl_in_current_unit_p): Do not accept abstract functions; for static functions check the presence of body.
* gimple-fold.c (can_refer_decl_in_current_unit_p): Do not accept abstract functions; for static functions check the presence of body. From-SVN: r202626
This commit is contained in:
parent
828e70c1d7
commit
1632a68673
|
@ -1,3 +1,9 @@
|
|||
2013-09-16 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gimple-fold.c (can_refer_decl_in_current_unit_p): Do not accept
|
||||
abstract functions; for static functions check the presence
|
||||
of body.
|
||||
|
||||
2013-09-16 James Greenhalgh <james.greenhalgh@arm.com>
|
||||
|
||||
* config/aarch64/aarch64-simd-builtins.def (fma): New.
|
||||
|
|
|
@ -60,6 +60,24 @@ can_refer_decl_in_current_unit_p (tree decl, tree from_decl)
|
|||
struct cgraph_node *node;
|
||||
symtab_node snode;
|
||||
|
||||
if (DECL_ABSTRACT (decl))
|
||||
return false;
|
||||
|
||||
/* We are concerned only about static/external vars and functions. */
|
||||
if ((!TREE_STATIC (decl) && !DECL_EXTERNAL (decl))
|
||||
|| (TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != FUNCTION_DECL))
|
||||
return true;
|
||||
|
||||
/* Static objects can be referred only if they was not optimized out yet. */
|
||||
if (!TREE_PUBLIC (decl) && !DECL_EXTERNAL (decl))
|
||||
{
|
||||
snode = symtab_get_node (decl);
|
||||
if (!snode)
|
||||
return false;
|
||||
node = dyn_cast <cgraph_node> (snode);
|
||||
return !node || !node->global.inlined_to;
|
||||
}
|
||||
|
||||
/* We will later output the initializer, so we can refer to it.
|
||||
So we are concerned only when DECL comes from initializer of
|
||||
external var. */
|
||||
|
@ -69,10 +87,6 @@ can_refer_decl_in_current_unit_p (tree decl, tree from_decl)
|
|||
|| (flag_ltrans
|
||||
&& symtab_get_node (from_decl)->symbol.in_other_partition))
|
||||
return true;
|
||||
/* We are concerned only about static/external vars and functions. */
|
||||
if ((!TREE_STATIC (decl) && !DECL_EXTERNAL (decl))
|
||||
|| (TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != FUNCTION_DECL))
|
||||
return true;
|
||||
/* We are folding reference from external vtable. The vtable may reffer
|
||||
to a symbol keyed to other compilation unit. The other compilation
|
||||
unit may be in separate DSO and the symbol may be hidden. */
|
||||
|
|
Loading…
Reference in New Issue