https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91556
--- Comment #6 from Jürgen Reuter <juergen.reuter at desy dot de> --- (In reply to kargl from comment #5) > (In reply to kargl from comment #3) > > (In reply to Jürgen Reuter from comment #2) > > > (In reply to kargl from comment #1) > > > > W(In reply to Jürgen Reuter from comment #0) > > > > > Created attachment 46763 [details] > > > > > Reproducer > > > > > > > > > > This is a rather recent regression, failing with r274920, and it had > > > > > been > > > > > still working with r274120. The compile error is: > > > > > gfortran -c muli_remnant.f90 > > > > > muli_remnant.f90:2186:34: > > > > > > > > > > 2186 | call evolvePDF (x(0), q, f) > > > > > | 1 > > > > > Error: Type mismatch in argument '_formal_0' at (1); passed REAL(8) to > > > > > REAL(16) > > > > > > > > What are the declared types of x, q, and f? > > > > What are the types of the dummy arguments of > > > > evolvepdf()? > > > > > > The code is attached. > > > > The code is broken, and gfortran has told you. > > module kinds > integer, parameter :: double = 8 ! 7..15 ! real64 ! c_double > integer, parameter :: quadruple = 16 ! 19..33 ! real128 ! c_float128 > integer, parameter :: default = quadruple > end module kinds > > module pdf_builtin > > subroutine pdfnorm_scan (this) > real(double) :: q, q2min, q2max > real(double), dimension(-6:6) :: f > real(double), dimension(0:2) :: x > call evolvePDF (x(1), q, f) > end subroutine pdfnorm_scan > > evolvepdf is called with REAL(8), REAL(8), REAL(8) > > subroutine proton_remnant_momentum_kind_pdf (this, GeV_scale, & > momentum_fraction, lha_flavor, valence_pdf, sea_pdf, twin_pdf) > real(default), intent(in) :: GeV_scale, momentum_fraction > integer, intent(in) :: lha_flavor > real(double), dimension(-6:6) :: pdf_array > call evolvePDF (momentum_fraction, GeV_scale, pdf_array) > end subroutine proton_remnant_momentum_kind_pdf > > evolvepdf is called with REAL(16), REAl(16), REAL(8) > > > evolvepdf is not generic. Steve, you are absolutely right. The cast of evolvePDF is always on double precision arguments, this line here: call evolvePDF (momentum_fraction, GeV_scale, pdf_array) should be call evolvePDF (dble (momentum_fraction), dble(GeV_scale), pdf_array) Sorry for the hiccup. Please close.