]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix symbol_table::change_decl_assembler_name when DECL_RTL is already computed
authorJan Hubicka <jh@suse.cz>
Wed, 30 Jul 2025 12:48:43 +0000 (14:48 +0200)
committerJan Hubicka <jh@suse.cz>
Wed, 30 Jul 2025 13:05:44 +0000 (15:05 +0200)
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.

gcc/ChangeLog:

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

gcc/symtab.cc

index 652f66a5d2f8bc0002dcff71d6c74efb9e014389..20dfe09ec2fef06b33627d1d630e27d54fa12f32 100644 (file)
@@ -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)
        {
          gcc_assert (!IDENTIFIER_INTERNAL_P (name));