On 19 January 2014 03:12:56 Jan Hubicka <hubi...@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