Bogus POINTER attribute mismatch with submodule MODULE PROCEDURE
Andrew Benson
abenson@carnegiescience.edu
Fri Jan 24 17:37:00 GMT 2020
I've created PR 93422 for this problem.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93422
The following code results in a bogus error (using git commit
472dc648ce3e7661762931d584d239611ddca964) claiming a pointer attribute
mismatch between the function result as defined in the module and submodule:
module t
type :: a
contains
procedure :: p => ap
end type a
type, extends(a) :: b
contains
procedure :: p => bp
end type b
type :: c
end type c
type, extends(c) :: d
end type d
interface
module function bp(s)
class(b), intent(inout) :: s
class(d), pointer :: bp
end function
end interface
contains
function ap(s)
class(a), intent(inout) :: s
class(d), pointer :: ap
end function ap
end module t
submodule (t) ts
contains
function bp(s)
class(d), pointer :: bp
class(b), intent(inout) :: s
end function bp
end submodule ts
$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/home/abenson/Galacticus/Tools/libexec/gcc/x86_64-pc-
linux-gnu/10.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-git/configure --prefix=/home/abenson/Galacticus/Tools --
enable-languages=c,c++,fortran --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.0.1 20200124 (experimental) (GCC)
$ gfortran -c test4.mod.F90 -o test4.mod.o
test4.mod.F90:35:12:
35 | submodule (t) ts
| 1
Error: Result mismatch for the overriding procedure 'p' at (1): POINTER
attribute mismatch in function result
test4.mod.F90:39:2:
39 | function bp(s)
| 1
Error: POINTER attribute mismatch in function result between the MODULE
PROCEDURE declaration in MODULE 't' and the declaration at (1) in (SUB)MODULE
'ts'
The code compiles successfully if the "pointer" attribute is removed, or if
the function in the submodule is declared using the "module procedure"
approach instead of explicitly (re)defining its interface. It also compiles
successfully using ifort 18.0.1.
--
* Andrew Benson: http://users.obs.carnegiescience.edu/abenson/contact.html
* Galacticus: https://github.com/galacticusorg/galacticus
More information about the Fortran
mailing list