This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libfortran/72790] New: MOVE_ALLOC() of character looses content data
- From: "nathanael.huebbe at informatik dot uni-hamburg.de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 03 Aug 2016 13:48:44 +0000
- Subject: [Bug libfortran/72790] New: MOVE_ALLOC() of character looses content data
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72790
Bug ID: 72790
Summary: MOVE_ALLOC() of character looses content data
Product: gcc
Version: 5.1.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: libfortran
Assignee: unassigned at gcc dot gnu.org
Reporter: nathanael.huebbe at informatik dot uni-hamburg.de
Target Milestone: ---
Created attachment 39052
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39052&action=edit
Code to reproduced the bug
The following code snippet reproduces the problem:
program move_alloc_test
character(:), allocatable :: srcString, destString
integer, allocatable :: srcArray(:), destArray(:)
srcString = "foo"
call move_alloc(srcString, destString)
write(0,*) "destString = '"//destString//"', &
&allocated(srcString) = ", allocated(srcString), ", &
&allocated(destString) = ", allocated(destString)
srcArray = [1, 2, 3]
call move_alloc(srcArray, destArray)
write(0,*) "destArray = (", destArray, "), &
&allocated(srcArray) = ", allocated(srcArray), ", &
&allocated(destArray) = ", allocated(destArray)
end program
The output of this program, when compiled with either gfortran 4.9.2 or 5.1.0,
shows an empty `destString` after the `move_alloc()` call:
destString = '', allocated(srcString) = F , allocated(destString) = T
destArray = ( 1 2 3 ), allocated(srcArray) =
F , allocated(destArray) = T
The output that I would have expected is this:
destString = 'foo', allocated(srcString) = F , allocated(destString) = T
destArray = ( 1 2 3 ), allocated(srcArray) =
F , allocated(destArray) = T
Note that this loss of data only happens for `character` allocatables, not for
array allocatables.