https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68560
--- Comment #6 from Mikael Morin <mikael at gcc dot gnu.org> --- (In reply to Dominique d'Humieres from comment #5) > > I think the problem is that it's actually working. The optional arguments > > are > > removed... When they are not present, the procedure declaration also loses > > them. > > Well, it is not how I read > > static integer(kind=4) C.3452 = 4; > ... > D.3451 = &x; > D.3453 = &C.3452; > _gfortran_shape_4 (&parm.2, D.3451, D.3453); > > There is a third argument D.3453 and its value is 4 (if it's not the KIND, > what is it?). In this case, the argument _is_ present, so it's not removed in the procedure declaration. This seems to be done on purpose (grep for ignore_optional) but I must admit that I don't understand why.