------- Comment #8 from steven at gcc dot gnu dot org 2005-11-07 23:29 ------- We get to "check_substring:" in match_varspec:
PROGRAM P IMPLICIT CHARACTER*8 (Y) YLOCAL='A' YBTABLE=YLOCAL(1:2) END check_substring: if (primary->ts.type == BT_CHARACTER) { switch (match_substring (primary->ts.cl, equiv_flag, &substring)) { case MATCH_YES: if (tail == NULL) primary->ref = substring; But at this point, while we have matched YLOCAL in the second assignment, we still haven't picked up a type for it. So primary->ts.type == BT_UNKNOWN and we never even try to match the substring. I'm not sure if YLOCAL should have just picked up a type earlier. Thoughts, Tobi? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24643