[Bug fortran/38506] New: Character storage association - actual <-> dummy argument
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Dec 12 16:07:00 GMT 2008
Cloned from PR 36771. See also
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/3d909edac01e60e2#
Since F2003 one can pass a "string" to a character(len=1),dimension(*)
dummy. The question is whether this should also work for generic
resolution or not.
The "call One('String')" (one = generic name) of the following program
is rejected by gfortran, ifort, NAG f95 and g95, stating that no
matching specific procedure could be found. On the other hand, all of
them accept "call Two" (= specific name). My question is now whether
"call One" should work as well (which would indicate a bug in all four
compilers) or not.
My gut feeling is that it is valid, but I cannot really pin point it in
the standard.*
*** Action item: If valid, gfortran should accept this.
Another question: Am I reading it correctly that if the default kind has
not the same value as "UCS4 = selected_char_kind('ISO_10646')" then a
call with an actual argument ucs4_"string" to a procedure with
array-valued ucs4-kind dummy argument is invalid Fortran 2003 and should
be rejected by the compiler with -std=f2003? This also holds for Fortran
2008 (current draft), does it?**
*** Action item: If invalid, we need to rejected (kind /= 1) character used
with storage association when -std < gnu is given. (I'm almost positive that it
is invalid.)
(One needs to be careful this also works with rank > 1.)
MODULE modtest
USE ISO_C_BINDING
INTERFACE One
MODULE PROCEDURE Two
END INTERFACE
CONTAINS
SUBROUTINE Two( chr ) bind(C)
CHARACTER(LEN=1, KIND=C_CHAR), DIMENSION(*) :: chr
END SUBROUTINE Two
END MODULE modtest
PROGRAM main
USE ISO_C_BINDING
USE modtest
CHARACTER(LEN=4, KIND=C_CHAR) :: chrScalar
chrScalar = 'Scal'
CALL One( chrScalar )
CALL Two( chrScalar )
END PROGRAM main
* Regarding the standard, I think "12.4.1.5 Sequence association" is the
most important section, but I also looked at "12.4.1.2 Actual arguments
associated with dummy data objects", "16.4.3 Storage association" and
(for c_char) "15.2 Interoperability between Fortran and C entities".
** "12.5.2.11 Sequence association" also talks about default kind and
c_char only.
--
Summary: Character storage association - actual <-> dummy
argument
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: rejects-valid, diagnostic
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38506
More information about the Gcc-bugs
mailing list