This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Avoid double mangling at WHOPR


Hi,
whopr currently produce local_static.1234.43124 type symbols. This is because
everything gets mangled at WPA time and then again at ltrans time.  This simply
avoids the second mangling. This save some space & makes WHOPR/non_WHOPR symbol
tables comparable more directly.

Bootstrapped/regtested x86_64-linux, also tested with Mozilla LTO, OK?

Honza

	* lto.c (lto_register_var_decl_in_symtab,
	lto_register_function_decl_in_symtab): Do not mangle at ltrans time.
	* lto-lang.c (lto_set_decl_assembler_name): Likewise.
Index: lto/lto.c
===================================================================
--- lto/lto.c	(revision 179664)
+++ lto/lto.c	(working copy)
@@ -604,7 +604,7 @@ lto_register_var_decl_in_symtab (struct
 
   /* Variable has file scope, not local. Need to ensure static variables
      between different files don't clash unexpectedly.  */
-  if (!TREE_PUBLIC (decl)
+  if (!TREE_PUBLIC (decl) && !flag_ltrans
       && !((context = decl_function_context (decl))
 	   && auto_var_in_fn_p (decl, context)))
     {
@@ -646,7 +646,7 @@ lto_register_function_decl_in_symtab (st
 {
   /* Need to ensure static entities between different files
      don't clash unexpectedly.  */
-  if (!TREE_PUBLIC (decl))
+  if (!TREE_PUBLIC (decl) && !flag_ltrans)
     {
       /* We must not use the DECL_ASSEMBLER_NAME macro here, as it
 	 may set the assembler name where it was previously empty.  */
Index: lto/lto-lang.c
===================================================================
--- lto/lto-lang.c	(revision 179664)
+++ lto/lto-lang.c	(working copy)
@@ -954,7 +954,7 @@ lto_set_decl_assembler_name (tree decl)
      TREE_PUBLIC, to avoid conflicts between individual files.  */
   tree id;
 
-  if (TREE_PUBLIC (decl))
+  if (TREE_PUBLIC (decl) || flag_ltrans)
     id = targetm.mangle_decl_assembler_name (decl, DECL_NAME (decl));
   else
     {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]