http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54667



--- Comment #2 from janus at gcc dot gnu.org 2012-09-22 08:53:51 UTC ---

The question is if it is really valid. At first sight both F03 and F08 only

specify that FPTR, i.e. the second argument to C_F_POINTER, shall be a pointer

with INTENT(OUT).



However, there are additional constraints depending on the actual value of

CPTR:



"(1) If the value of CPTR is the C address of an interoperable data

entity, FPTR shall be a data pointer with type and type parame-

ters interoperable with the type of the entity. ..."



"(2) If the value of CPTR is the result of a reference to C LOC with a

noninteroperable argument X, FPTR shall be a nonpolymorphic

scalar pointer with the same type and type parameters as X. ..."





While it would be nontrivial to fully enforce these constraints by a runtime

check, I think they might effectively mean that FPTR must not be polymorphic:

In the second case this constraint is spelled out explicitly, and the first

case demands that FPTR shall be interoperable. But polymorphic objects are by

definition not interoperable.

Reply via email to