[Bug fortran/33888] ICE - CHARACTER expression using an ELEMENTAL FUNCTION as actual arg
pault at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Oct 25 09:20:00 GMT 2007
------- Comment #2 from pault at gcc dot gnu dot org 2007-10-25 09:20 -------
(In reply to comment #1)
For some reason, the interface mechanism in trans-expr.c is failing for this
case of an elemental function (try a constant length for my_func or to make it
non-elemental and array valued - both work fince). You can see this in the
code that the testcase produces. The internal length variable, in my_func,
'..length' is being referenced in the main program, with inevitable
consequences!
A workaround, for now, is to write a temporary, which can be allocatable if
necessary.
character(8) :: temp(4)
......snip......
temp = myfunc (indata))
call process (temp)
A tricky alternative, to make use of automatic allocation and cleanup of
allocatable components, would be
type mytype
character(8), allocatable :: c(:)
end type mytype
type(mytype) :: temp
......snip......
temp%c = myfunc (indata))
call process (temp%c)
However, this segfaults for the same reason as the original. *sigh*
Paul
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33888
More information about the Gcc-bugs
mailing list