https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78021
--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- This looks promising, modulo some line breaks: Index: dependency.c =================================================================== --- dependency.c (Revision 240928) +++ dependency.c (Arbeitskopie) @@ -226,10 +226,24 @@ gfc_dep_compare_functions (gfc_expr *e1, gfc_expr if ((args1->expr == NULL) ^ (args2->expr == NULL)) return -2; - if (args1->expr != NULL && args2->expr != NULL - && gfc_dep_compare_expr (args1->expr, args2->expr) != 0) - return -2; + if (args1->expr != NULL && args2->expr != NULL) + { + gfc_expr *e1, *e2; + e1 = args1->expr; + e2 = args2->expr; + if (gfc_dep_compare_expr (e1, e2) != 0) + return -2; + + /* Special case: String arguments which compare equal can + still have different lengths, which makes them different calls. */ + + if (e1->expr_type == EXPR_CONSTANT && e1->ts.type == BT_CHARACTER + && e2->expr_type == EXPR_CONSTANT && e2->ts.type == BT_CHARACTER + && e1->value.character.length != e2->value.character.length) + return -2; + } + args1 = args1->next; args2 = args2->next; }