Hi,
while working on patch assigning unique names to static symbols I noticed that
fortran symbols are not renamed since the frontend calls make_decl_rtl.  This
gets DECL_ASSEMBBLER_NAME and DECL_RTL out of sync. I think we can drop that
call, but it is also good idea to avoid this inconsistence, so this patch makes
symbol_table::change_decl_assembler_name to recompute DECL_RTL in this case.

Bootstrapped/regtested x86_64-linux, comitted.

gcc/ChangeLog:

        * symtab.cc (symbol_table::change_decl_assembler_name): Recompute 
DECL_RTL
        in case it is already computed.

diff --git a/gcc/symtab.cc b/gcc/symtab.cc
index fc1155f4696..2ce905cb4f1 100644
--- a/gcc/symtab.cc
+++ b/gcc/symtab.cc
@@ -303,6 +303,11 @@ symbol_table::change_decl_assembler_name (tree decl, tree 
name)
        warning (0, "%qD renamed after being referenced in assembly", decl);
 
       SET_DECL_ASSEMBLER_NAME (decl, name);
+      if (DECL_RTL_SET_P (decl))
+       {
+         SET_DECL_RTL (decl, NULL);
+         make_decl_rtl (decl);
+       }
       if (alias)
        {
          IDENTIFIER_TRANSPARENT_ALIAS (name) = 1;

Reply via email to