This is a fix of a wrong warning for a bas ISR name. The assumption was that if DECL_ASSEMBLER_NAME is set, it would always starts with a *.

This is not the case for LTO compiler where the assembler name is the plain name of the function (except an assembler name is set).

Thus, do a more restrictive test if the first character of the function name has to be skipped.

Ok to commit?

Johann


        PR target/59396
        * config/avr/avr.c (avr_set_current_function): If the first char
        of the function name is skipped, make sure it is actually '*'.
Index: config/avr/avr.c
===================================================================
--- config/avr/avr.c	(revision 205709)
+++ config/avr/avr.c	(working copy)
@@ -599,7 +599,8 @@ avr_set_current_function (tree decl)
       tree ret = TREE_TYPE (TREE_TYPE (decl));
       const char *name;
 
-      name = DECL_ASSEMBLER_NAME_SET_P (decl)
+      name = (DECL_ASSEMBLER_NAME_SET_P (decl)
+              && '*' == *IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)))
         /* Remove the leading '*' added in set_user_assembler_name.  */
         ? 1 + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))
         : IDENTIFIER_POINTER (DECL_NAME (decl));

Reply via email to