------- Comment #46 from Tobias dot Schlueter at physik dot uni-muenchen dot de 2007-10-25 19:50 ------- Subject: Re: wrong types in character array/scalar binop
dave at hiauly1 dot hia dot nrc dot ca wrote: > Subject: Re: wrong types in character array/scalar binop > >> ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix ? prefix : "T", > > I'm still don't understand how we get underscores. We have in defaults.h: > > #ifndef ASM_FORMAT_PRIVATE_NAME > # define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ > do { const char *const name_ = (NAME); \ > char *const output_ = (OUTPUT) = \ > (char *) alloca (strlen (name_) + 32); \ > sprintf (output_, ASM_PN_FORMAT, name_, (unsigned long)(LABELNO)); \ > } while (0) > #endif > > #ifndef ASM_PN_FORMAT > # ifndef NO_DOT_IN_LABEL > # define ASM_PN_FORMAT "%s.%lu" > # else > # ifndef NO_DOLLAR_IN_LABEL > # define ASM_PN_FORMAT "%s$%lu" > # else > # define ASM_PN_FORMAT "__%s_%lu" > # endif > # endif > #endif /* ! ASM_PN_FORMAT */ > > To the best of my knowledge, we don't define either ASM_FORMAT_PRIVATE_NAME > or NO_DOT_IN_LABEL. I believe NO_DOLLAR_IN_LABEL is defined on those PA > targets that include elfos.h. ~/src/hggcc/gcc/config tobi$ find . | xargs grep ASM_PN ./alpha/vms.h:#define ASM_PN_FORMAT "%s___%lu" ./h8300/h8300.h:#define ASM_PN_FORMAT "%s___%lu" ./ia64/ia64.h:#define ASM_PN_FORMAT (TARGET_GNU_AS ? "%s.%lu" : "%s?%lu") ./mmix/mmix.h:#define ASM_PN_FORMAT "%s::%lu" ./mn10300/mn10300.h:#define ASM_PN_FORMAT "%s___%lu" ./pa/pa.h:#define ASM_PN_FORMAT "%s___%lu" ./v850/v850.h:#define ASM_PN_FORMAT "%s___%lu" It looks like you do :-) I wonder why this name-mangling is necessary, it's not like these names are going to appear in the assembly, is it? Cheers, - Tobi -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31608