On Thu, Mar 13, 2014 at 02:24:06PM +0100, Georg-Johann Lay wrote: > > Problem is that the assembler name might or might not be prefixed by '*' > depending on when TARGET_SET_CURRENT_FUNCTION is called. > > The change is just to fix wrong warning because the current implementation > of TARGET_SET_CURRENT_FUNCTION /always/ skips the first char when the > assembler name is set.
FWIW, there's default_strip_name_encoding (varasm.c), which does the same thing, and is used by a couple of other targets. Regards Senthil > > PR target/59396 > * config/avr/avr.c (avr_set_current_function): Skip the first > char of the (assembler) name provided it's a '*'. > > Index: config/avr/avr.c > =================================================================== > --- config/avr/avr.c (revision 208532) > +++ config/avr/avr.c (working copy) > @@ -600,10 +600,15 @@ avr_set_current_function (tree decl) > const char *name; > > name = DECL_ASSEMBLER_NAME_SET_P (decl) > - /* Remove the leading '*' added in set_user_assembler_name. */ > - ? 1 + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) > + ? IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) > : IDENTIFIER_POINTER (DECL_NAME (decl)); > > + /* Skip a leading '*' that might still prefix the assembler name, > + e.g. in non-LTO runs. */ > + > + if (*name == '*') > + name++; > + > /* Silently ignore 'signal' if 'interrupt' is present. AVR-LibC > startet > using this when it switched from SIGNAL and INTERRUPT to ISR. */ > >