my new version of gfortran (10.2.0) complains with an error when I compile abinit, due to simultaneous casts that it recognizes passing the same variable (real or complex) to a routine that only expects one of the 2 types (even if the latter is outside its scope, like a lapack/blas call). This is traditional disgusting fortran and BLAS usage, but I can't get around it.
An example below:
Does anyone know of a flag for gfortran to make it more lenient (like before) or how I can circumvent this without recoding all of the abinit interfaces. Sometimes the calls are side by side, to dcopy and zcopy with the same argument, so impossible to separate, just checking if it is dimensioned with an extra factor of 2 or not...../../../../../shared/common/src/28_numeric_noabirule/abi_xhpgv.f90:103:34:
103 | call zhpgv(itype,jobz,uplo,n,a,b,w,z,ldz,eigen_z_work,eigen_z_rwork,info)
| 1
......
235 | call zhpgv(itype,jobz,uplo,n,a,b,w,z,ldz,work,rwork,info)
| 2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(8)/COMPLEX(8)).
My flags (pedantic also raises some other issues, so I removed it for the above tests):
FCFLAGS_EXTRA="-g -Wall -pedantic -funroll-loops -O3 -fgcse-lm -fgcse-sm -ftree-vectorize -fbounds-check -finit-integer=-666 -finit-real=zero -ffree-line-length-0 -I/usr/local/include -mno-avx"