https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95998
--- Comment #2 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- (In reply to Dominique d'Humieres from comment #1) > Is static in C/C++ equivalent of SAVE in fortran (at least in the context of > gfc_typename)? Yes. > If yes, AFAIU the code the odd access to gfc_typename use buffer2, while > even ones > use buffer1? Wouldn't it be simple (safer?) to use only buffer1? > > static char buffer[GFC_MAX_SYMBOL_LEN + 7]; /* 7 for "TYPE()" + '\0'. */ > gfc_typespec *ts1; > gfc_charlen_t length = 0; > > Same thing for gfc_dummy_typename, gfc_typename, ... . If we ever have three occurences of gfc_typename in a function list, like foo (gfc_typename(a), gfc_typename(b), gfc_typename(c)); we will get the wrong result for the third one. We will also get a wrong result for pa = gfc_typename(a); pb = gfc_typename(b); pc = gfc_typename(c); because then pa will point to the same memory as pc.