On 10/3/19 10:01 PM, Thomas Koenig wrote:
Hi,
I am using gcc version 10.0.0 20190825 (experimental) . During the
Lapack compilation I got the following errors:
I had the nagging feeling that this error analysis might not be correct.
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.
Shoot me.
--
Toon Moene - e-mail: toon@xxxxxxxxx - phone: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
At home: http://moene.org/~toon/; weather: http://moene.org/~hirlam/
Progress of GNU Fortran: http://gcc.gnu.org/wiki/GFortran#news