Hi all,

By the way, with

$ gfortran --version
GNU Fortran (GCC) 16.0.0 20251216 (experimental)
Copyright (C) 2025 Free Software Foundation, Inc.

$ cat /proc/version
Linux version 6.19.6-200.fc43.x86_64 (mockbuild@41821fa48c8f47b3bd467b54da433509) (gcc (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7), GNU ld version 2.45.1-4.fc43) #1 SMP PREEMPT_DYNAMIC Thu Mar  5 00:10:35 UTC 2026

$ gfortran --version
GNU Fortran (GCC) 16.0.0 20251216 (experimental)
Copyright (C) 2025 Free Software Foundation, Inc.

$ gfortran -c salvatore.f90 
salvatore.f90:30:13:

   30 |     procedure, pass (a) :: csgrw    => psb_d_mf_csgrw
      |             1
Error: Argument mismatch for the overriding procedure ‘csgrw’ at (1): Shape mismatch in argument 'iren'

Regards,
Jorge.

--
Arjen Markus <[email protected]> escribió:

FWIW, the ifx compiler accepts the code, even when asking for all possible warnings (-warn:all).

Op wo 18 mrt 2026 om 11:06 schreef Salvatore Filippone <[email protected]>:

Hi there, 
while experimenting with some code variations, I encountered a rather strange error message There are multiple ways to get rid of the message, such as altering the IMPORT statement at line 33, change some names by taking out prefixes, or changes "d_" into "r_". 
     flang compiles without complaints. 
     ============ sh ==========
     [sfilippo@euler BUG]$ flang --version
flang version 21.1.8 (Fedora 21.1.8-4.fc43)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
[sfilippo@euler BUG]$ flang -c d_mf_m.f90
[sfilippo@euler BUG]$ gfortran --version
GNU Fortran (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7)
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[sfilippo@euler BUG]$ gfortran -c d_mf_m.f90
d_mf_m.f90:27:13:

   27 |     procedure, pass(a) :: csgrw     => psb_d_mf_csgrw
      |             1
Error: Argument mismatch for the overriding procedure ‘csgrw’ at (1): Shape mismatch in argument 'iren'
[sfilippo@euler BUG]$
 
     Is this user error, bug or what? 
     Thanks
     Salvatore  
      
     ===================d_mf_m.f90===========
     module psb_base_spm_mod
  type  :: psb_base_spm
  end type psb_base_spm
end module psb_base_spm_mod

module psb_r_base_spm_mod
  use psb_base_spm_mod
  type, extends(psb_base_spm) :: psb_r_base_spm
  contains
    procedure, pass(a) :: csgrw      => psb_r_base_csgrw
  end type psb_r_base_spm

  interface
    subroutine psb_r_base_csgrw(a,iren)
      import
      class(psb_r_base_spm), intent(in) :: a
      integer, intent(in), optional        :: iren(:)
    end subroutine psb_r_base_csgrw
  end interface
end module psb_r_base_spm_mod

module psb_d_mf_mat_mod
  use psb_r_base_spm_mod
  type, extends(psb_r_base_spm) :: psb_d_mf_spm
    procedure(d_mf_mv), pass(a), pointer :: var_csmv => null()
  contains
    procedure, pass(a) :: csgrw     => psb_d_mf_csgrw
    procedure, pass(a) :: set_csmv     => d_mf_set_csmv
  end type psb_d_mf_spm

  interface
    subroutine d_mf_mv(a,x,info)
      import :: psb_d_mf_spm
      class(psb_d_mf_spm), intent(in) :: a
      real, intent(in)       :: x(:)
      integer, intent(out)    :: info
    end subroutine d_mf_mv
  end interface

  interface
    subroutine psb_d_mf_csgrw(a,iren)
      import
      class(psb_d_mf_spm), intent(in) :: a
      integer, intent(in), optional :: iren(:)
    end subroutine psb_d_mf_csgrw
  end interface

contains
  subroutine  d_mf_set_csmv(func,a)
    implicit none
    class(psb_d_mf_spm), intent(inout) :: a
    procedure(d_mf_mv) :: func
    a%var_csmv => func  
    return
  end subroutine d_mf_set_csmv
end module psb_d_mf_mat_mod
==========================================



 

Reply via email to