https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95090
--- Comment #9 from Manfred Schwarb <manfred99 at gmx dot ch> --- I sprinkled some printf's into get_unique_type_string(): XXderived->name: strlen=63; t2345678901234567890123456789012345678901234567890123456789_123 XXdt_name: strlen=63; T2345678901234567890123456789012345678901234567890123456789_123 XXderived->ns->proc_name->name: strlen=63; m2345678901234567890123456789012345678901234567890123456789_123 XXstring: strlen=127; m2345678901234567890123456789012345678901234567890123456789_123_T2345678901234567890123456789012345678901234567890123456789_123 XXderived->name: strlen=66; Pdtt2345678901234567890123456789012345678901234567890123456789_123 XXdt_name: strlen=66; Pdtt2345678901234567890123456789012345678901234567890123456789_123 XXderived->ns->proc_name->name: strlen=63; m2345678901234567890123456789012345678901234567890123456789_123 XXstring: strlen=130; m2345678901234567890123456789012345678901234567890123456789_123_Pdtt2345678901234567890123456789012345678901234567890123456789_123 XXderived->name: strlen=66; Pdtt2345678901234567890123456789012345678901234567890123456789_123 XXdt_name: strlen=66; Pdtt2345678901234567890123456789012345678901234567890123456789_123 XXderived->ns->proc_name->name: strlen=63; m2345678901234567890123456789012345678901234567890123456789_123 XXstring: strlen=130; m2345678901234567890123456789012345678901234567890123456789_123_Pdtt2345678901234567890123456789012345678901234567890123456789_123 If both string lengths get upped by 3, things get working: get_unique_type_string (char *string, gfc_symbol *derived) { - char dt_name[GFC_MAX_SYMBOL_LEN+1]; + char dt_name[GFC_MAX_SYMBOL_LEN+4]; .... get_unique_hashed_string (char *string, gfc_symbol *derived) { - char tmp[2*GFC_MAX_SYMBOL_LEN+2]; + char tmp[2*GFC_MAX_SYMBOL_LEN+5]; So with these changes, I get no ICE anymore.