Gfortran-15 bug/regression

I agree with the gist of this statement, but in f77 the external statement also guaranteed that if a compiler had, or later added, an intrinsic function named ff(), then it would be the external function that was referenced rather than the intrinsic. F77 was a rather primitive language by modern fortran standards, and most (perhaps all) compilers had many nonstandard intrinsic function to do various things. So using the external declaration was a way to make your code bulletproof against either nonstandard intrinsics or against future changes to the fortran standard itself.

Nowadays, there are several other ways to provide an interface to dummy argument procedures (e.g. a local interface block, or a procedure() declaration, or a reference to an interface block in a module, etc.) and that is preferred over the simple external declaration. But the external declaration is still part of the language for backwards compatibility and for legacy code.