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.

Reply via email to