Fix compute_reloc_for_constant

Bernhard Reutner-Fischer rep.dot.nop@gmail.com
Sun Jan 19 09:05:00 GMT 2014


On 19 January 2014 03:12:56 Jan Hubicka <hubicka@ucw.cz> wrote:

> Hi,
> while comparing LTO and non-LTO builds I noticed that with LTO we produce a lot
> more vtables in datal.rel.ro rather than data.rel.ro.local
> This is because of partitioning promoting more symbols global. For RTL we make
> section decisions based on SYMBOL_REF_LOCAL_FLAG that is set based on
> decl_binds_local_p.  For variables we use TREE_PUBLIC check that is overly
> conservative.

Honza,

Would you (or anybody else for that matter) mind looking into PR32219 while 
there?
See http://gcc.gnu.org/ml/gcc-patches/2010-03/msg00665.html and other 
discussion of that bug on the ML last year.

TIA,
Bernhard
>
> Bootstrapped/regtested x86_64-linux, OK?
> 	* varasm.c (compute_reloc_for_constant): Use targetm.binds_local_p
> 	instead of TREE_PUBLIC to determine if reference will be local
> 	within given DSO or not.
> Index: varasm.c
> ===================================================================
> --- varasm.c	(revision 206684)
> +++ varasm.c	(working copy)
> @@ -4060,7 +4060,7 @@
>  	  break;
>  	}
>
> -      if (TREE_PUBLIC (tem))
> +      if (!targetm.binds_local_p (tem))
>  	reloc |= 2;
>        else
>  	reloc |= 1;



Sent with AquaMail for Android
http://www.aqua-mail.com




More information about the Gcc-patches mailing list