gcc-10 Bug report
Thomas Koenig
tkoenig@netcologne.de
Sat Oct 5 17:37:00 GMT 2019
Am 05.10.19 um 15:12 schrieb Toon Moene:
> On 10/3/19 10:01 PM, Thomas Koenig wrote:
>> If you use a slightly newer version, the error message will become
>> clearer:
>>
>> sbdsvdx.f:777:39:
>>
>> Â Â 420 |Â Â Â Â Â Â Â Â Â CALL SCOPY( N, D, 1, WORK( IETGK ), 2 )
>> Â Â Â Â Â Â |Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 2
>> ......
>> Â Â 777 |Â Â Â Â Â Â Â Â Â CALL SCOPY( N*2, Z( 1,I ), 1, WORK, 1 )
>> Â Â Â Â Â Â |Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1
>> Fehler: Rank mismatch between actual argument at (1) and actual
>> argument at (2) (scalar and rank-1)
>>
>> This is a violation of the Fortran standard by the Lapack code.
>> To allow this idiom, you can add the -fallow-argument-mismatch
>> argument to the OPTS variable in make.inc before building.
>
> For simplicity I use the wording in the Fortran 77 Standard - I don't
> think subsequent Standards changed this or made it obsolescent.
>
> <QUOTE>
> 15.9.3.3 Arrays as Dummy Arguments
>
> Within a program unit, the array declarator given for an array provides
> all array declarator information needed for the array in an execution of
> the program unit. The number and size of dimensions in an actual
> argument array declarator may be different from the number and size of
> the dimensions in an associated dummy argument array declarator.
>
> A dummy argument that is an array may be associated with an actual
> argument that is an array, array element, or array element substring.
> <UNQUOTE>
>
> Of course, you need to read much more of the F77 Standard to find the
> definitions of all these terms, but I think the last line quoted
> actually *allows* passing WORK( IETGK ) as an actual argument associated
> with an array dummy argument.
I wonder if this is still valid, and if the change (if any) is intentional.
From F18, 15.5.2.4 Ordinary dummy variables
14 If the actual argument is a noncoindexed scalar, the
corresponding dummy argument shall be scalar unless the actual
argument is default character, of type character with the
C character kind (18.2.2), or is an element or substring of an
element of an array that is not an assumed-shape, pointer, or
polymorphic array, the dummy argument has assumed-rank, or the
dummy argument is an assumed-type assumed-size array.
Hm, I think you're right. I will submit a patch which corrects this.
> Shoot me.
Aint gonna happen :-)
Thanks!
Thomas
More information about the Gcc
mailing list