Re: Allow references to symbols with user specified DEFAULT bisibility

2014-02-04 Thread Richard Biener
On Tue, 4 Feb 2014, Jan Hubicka wrote:

 Hi,
 while implementing checks in can_refer_decl_in_current_unit_p I had primarily 
 symbols
 with HIDDEN visibility in mind.  I just noticed that libstdc++ makes quite 
 few symbols
 with default visbility specified by hand.  I see no reason for disabling 
 optimization
 here.
 
 Bootstrapped/regtested x86_64-linux, OK?

Ok.

Thanks,
Richard.

   * gimple-fold.c (can_refer_decl_in_current_unit_p): Allow references to
   symbols with user specified default visibility.
  
 Index: gimple-fold.c
 ===
 --- gimple-fold.c (revision 207450)
 +++ gimple-fold.c (working copy)
 @@ -114,6 +114,7 @@ can_refer_decl_in_current_unit_p (tree d
   unit may be in separate DSO and the symbol may be hidden.  */
if (DECL_VISIBILITY_SPECIFIED (decl)
 DECL_EXTERNAL (decl)
 +   DECL_VISIBILITY (decl) != VISIBILITY_DEFAULT
 (!(snode = symtab_get_node (decl)) || !snode-in_other_partition))
  return false;
/* When function is public, we always can introduce new reference.
 
 


Allow references to symbols with user specified DEFAULT bisibility

2014-02-03 Thread Jan Hubicka
Hi,
while implementing checks in can_refer_decl_in_current_unit_p I had primarily 
symbols
with HIDDEN visibility in mind.  I just noticed that libstdc++ makes quite few 
symbols
with default visbility specified by hand.  I see no reason for disabling 
optimization
here.

Bootstrapped/regtested x86_64-linux, OK?

* gimple-fold.c (can_refer_decl_in_current_unit_p): Allow references to
symbols with user specified default visibility.
 
Index: gimple-fold.c
===
--- gimple-fold.c   (revision 207450)
+++ gimple-fold.c   (working copy)
@@ -114,6 +114,7 @@ can_refer_decl_in_current_unit_p (tree d
  unit may be in separate DSO and the symbol may be hidden.  */
   if (DECL_VISIBILITY_SPECIFIED (decl)
DECL_EXTERNAL (decl)
+   DECL_VISIBILITY (decl) != VISIBILITY_DEFAULT
(!(snode = symtab_get_node (decl)) || !snode-in_other_partition))
 return false;
   /* When function is public, we always can introduce new reference.