------- Comment #8 from burnus at gcc dot gnu dot org 2007-05-29 14:05 -------
> In reducing this, I discovered that gfortran currently hangs on the following
> much simpler code. I suspect that if we fix this, it'll fix the original code
> too.
> write(*,*) transfer("A", "x", 20)
NAG f95 and g95 print for that case the (default-shown) warning:
Warning: Intrinsic TRANSFER has partly undefined result
and
Warning (148): Not enough data to produce the requested array size in
TRANSFER function at (1)
NAG f95, ifort and g95 print "A" (sunf95 prints "A2�Uh2�U").
Such a compile-time warning for transfer(...,...,size) would be also nice to
have in gfortran.
For the original test case (comment 0, see also comment 1):
- f95 and g95 print the same warning plus the error (g95: see comment 2):
Error: Unequal character lengths (1 and 20) in MERGE intrinsic
- ifort accepts it and returns a zero-length string
- sunf95 prints an error (see comment 1)
> character(len=20) :: string
> logical :: a(20)
> write(*,*) transfer (merge (transfer("A", "x", 20), "b", a), string )
> end
This gives still a warning with g95 and NAG f95; NAG outputs "Abbbbbb",
ifort/g95/sunf95 show "bbbbbbbbbbbbbbbbbbbb".
I agree with Paul, NAGf95 and g95 that merge needs to have
same-character-length strings.
--
burnus at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31610