[Bug fortran/108369] FM509 Fails to compile with error
sgk at troutmask dot apl.washington.edu
gcc-bugzilla@gcc.gnu.org
Thu Jan 12 17:59:57 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108369
--- Comment #4 from Steve Kargl <sgk at troutmask dot apl.washington.edu> ---
On Wed, Jan 11, 2023 at 09:50:37PM +0000, kargl at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108369
>
> --- Comment #3 from kargl at gcc dot gnu.org ---
> (In reply to anlauf from comment #1)
> > (In reply to Ben Brewer from comment #0)
> > Workaround: either use -std=legacy or fix the above argument declaration to:
> >
> > CHARACTER C1D001(*)*8,CVD001*8
>
> While the workaround will work, it does so because it disables
> -fallow-argument-mismatch. But, that feature emitting a bogus
> error/warning.
>
> Note the following all compile and execute. TKR is satisfied
> as I discussion in comment #2.
>
After looking into this a bit closer, Harald is indeed correct
with the need for -std=legacy (or -fallow-argument-mismatch).
In the line
CALL SN512(C1N001(5)(2:9),CVCOMP)
'C1N001(5)(2:9)' is a substring of the array element 'C1N001(5)',
which is a scalar (ie., rank = 0). The interface for SN512 is
SUBROUTINE SN512(C1D001,CVD001)
CHARACTER C1D001(6)*8,CVD001*8
The first dummy argument is a rank 1 array.
Now, if the test is changed to pass an array section such as
CALL SN512(C1N001(4:5)(2:9),CVCOMP)
then gfortran gives
% gfcx -w -c fm509.f
fm509.f:378:17:
378 | CALL SN512(C1N001(4:5)(2:9),CVCOMP)
03770509
| 1
Error: Actual argument contains too few elements for dummy
argument 'c1d001' (16/48) at (1)
which I believe may be wrong.
More information about the Gcc-bugs
mailing list