https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111781
--- Comment #3 from Mikael Morin <mikael at gcc dot gnu.org> --- I'm trying to remove the formal_arg_flag global variables, which seem to just disable all the checks on dummy arguments. Unfortunately, it regresses a bit, say pr101026.f for example can be simplified to this: SUBROUTINE PASSB4 (CC,CH) DIMENSION CC(IDO,4,L1), CH(IDO,L1,*) END which gives: pr101026.f:4:19: 4 | DIMENSION CC(IDO,4,L1), CH(IDO,L1,*) | 1 Error: Variable ‘ido’ cannot appear in the expression at (1) pr101026.f:4:33: 4 | DIMENSION CC(IDO,4,L1), CH(IDO,L1,*) | 1 Error: Variable ‘ido’ cannot appear in the expression at (1) pr101026.f:4:25: 4 | DIMENSION CC(IDO,4,L1), CH(IDO,L1,*) | 1 Error: Variable ‘l1’ cannot appear in the expression at (1) pr101026.f:4:37: 4 | DIMENSION CC(IDO,4,L1), CH(IDO,L1,*) | 1 Error: Variable ‘l1’ cannot appear in the expression at (1) What I don't see is what makes the IDO and L1 variables acceptable in a specification expression. It seems to me the errors above are valid.