diff mbox

[google-4_6] disable localization of hidden symbols in streaming LIPO (issue6101045)

Message ID 20120420211319.69D86C1B73@rong.mtv.corp.google.com
State New
Headers show

Commit Message

Rong Xu April 20, 2012, 9:13 p.m. UTC
Hi, 

This patch is for google-4_6 branch only.

It disables the localization of hidden and internal symbols in streaming
LIPO. Otherwise, we may have undefines in link time because of the reference in
other module that is not include the define module into module group.

Tested with google internal benchmarks, gcc regression and bootstrap.

Thanks,

-Rong

2012-04-20   Rong Xu  <xur@google.com>

	* gcc/ipa.c (cgraph_externally_visible_p): Not localize hidden symbols
        in streaming LIPO.
	(varpool_externally_visible_p): Ditto.


--
This patch is available for review at http://codereview.appspot.com/6101045

Comments

Xinliang David Li April 20, 2012, 9:17 p.m. UTC | #1
ok.

thanks,

David

On Fri, Apr 20, 2012 at 2:13 PM, Rong Xu <xur@google.com> wrote:
> Hi,
>
> This patch is for google-4_6 branch only.
>
> It disables the localization of hidden and internal symbols in streaming
> LIPO. Otherwise, we may have undefines in link time because of the reference in
> other module that is not include the define module into module group.
>
> Tested with google internal benchmarks, gcc regression and bootstrap.
>
> Thanks,
>
> -Rong
>
> 2012-04-20   Rong Xu  <xur@google.com>
>
>        * gcc/ipa.c (cgraph_externally_visible_p): Not localize hidden symbols
>        in streaming LIPO.
>        (varpool_externally_visible_p): Ditto.
>
> Index: gcc/ipa.c
> ===================================================================
> --- gcc/ipa.c   (revision 186600)
> +++ gcc/ipa.c   (working copy)
> @@ -790,7 +790,9 @@ cgraph_externally_visible_p (struct cgraph_node *n
>     return false;
>
>   /* When doing link time optimizations, hidden symbols become local.  */
> -  if (in_lto_p
> +  /* Disable this in streaming LIPO, as the defition may not be seen by all
> +     the references.  */
> +  if (in_lto_p && !flag_ripa_stream
>       && (DECL_VISIBILITY (node->decl) == VISIBILITY_HIDDEN
>          || DECL_VISIBILITY (node->decl) == VISIBILITY_INTERNAL)
>       /* Be sure that node is defined in IR file, not in other object
> @@ -885,7 +887,9 @@ varpool_externally_visible_p (struct varpool_node
>     return false;
>
>   /* When doing link time optimizations, hidden symbols become local.  */
> -  if (in_lto_p
> +  /* Disable this in streaming LIPO, as the defition may not be seen by all
> +     the references.  */
> +  if (in_lto_p && !flag_ripa_stream
>       && (DECL_VISIBILITY (vnode->decl) == VISIBILITY_HIDDEN
>          || DECL_VISIBILITY (vnode->decl) == VISIBILITY_INTERNAL)
>       /* Be sure that node is defined in IR file, not in other object
>
> --
> This patch is available for review at http://codereview.appspot.com/6101045
diff mbox

Patch

Index: gcc/ipa.c
===================================================================
--- gcc/ipa.c	(revision 186600)
+++ gcc/ipa.c	(working copy)
@@ -790,7 +790,9 @@  cgraph_externally_visible_p (struct cgraph_node *n
     return false;
 
   /* When doing link time optimizations, hidden symbols become local.  */
-  if (in_lto_p
+  /* Disable this in streaming LIPO, as the defition may not be seen by all
+     the references.  */
+  if (in_lto_p && !flag_ripa_stream
       && (DECL_VISIBILITY (node->decl) == VISIBILITY_HIDDEN
 	  || DECL_VISIBILITY (node->decl) == VISIBILITY_INTERNAL)
       /* Be sure that node is defined in IR file, not in other object
@@ -885,7 +887,9 @@  varpool_externally_visible_p (struct varpool_node
     return false;
 
   /* When doing link time optimizations, hidden symbols become local.  */
-  if (in_lto_p
+  /* Disable this in streaming LIPO, as the defition may not be seen by all
+     the references.  */
+  if (in_lto_p && !flag_ripa_stream
       && (DECL_VISIBILITY (vnode->decl) == VISIBILITY_HIDDEN
 	  || DECL_VISIBILITY (vnode->decl) == VISIBILITY_INTERNAL)
       /* Be sure that node is defined in IR file, not in other object