[Bug fortran/54286] New: [4.8 Regression] Accepts invalid proc-pointer assignments involving proc-ptr function result
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Aug 16 15:05:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54286
Bug #: 54286
Summary: [4.8 Regression] Accepts invalid proc-pointer
assignments involving proc-ptr function result
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: janus@gcc.gnu.org
The following test is probably invalid, but not rejected by recent trunk
versions:
type :: t
procedure(a), pointer, nopass :: p
end type
type(t) :: x
procedure(iabs), pointer :: pp
x%p => a ! ok
x%p => a(1) ! invalid, but not rejected by 4.8
pp => a(2) ! ok
pp => a ! invalid, but not rejected by 4.8
contains
function a (c) result (b)
integer, intent(in) :: c
procedure(iabs), pointer :: b
b => iabs
end function
end
gfortran 4.7 rejects it with:
x%p => a(1)
1
Error: Interface mismatch in procedure pointer assignment at (1): Type/rank
mismatch in return value of 'b'
pp => a
1
Error: Interface mismatch in procedure pointer assignment at (1): Type/rank
mismatch in return value of 'a'
However, I wonder why one of the errors refers to 'a' and the other to 'b'.
Also I'm not sure whether 'type/rank mismatch' is the correct diagnostic. I
would rather say there is a mismatch in the procedure pointer attribute of the
result (which is not checked for yet), cf. also PR 35831.
More information about the Gcc-bugs
mailing list