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
     {
