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.

Reply via email to