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

            Bug ID: 57839
           Summary: Reallocate on assignment does not work properly
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jwmwalrus at gmail dot com

The following program does not produce the expected results with either
gfortran 4.8 or gfortran 4.9:

program test_lhs_allocate

    use iso_fortran_env

    implicit none

    type :: table
        character(63) :: name = ''
        character(63), allocatable :: alias(:)
    end type

    integer :: i, j
    type(table), allocatable :: list(:)
    type(table) :: item

    allocate (list(1:0))    !empty list

    item%name = 'name'
    item%alias = [character(63) :: 'label']
    list = [list, item]

    item%name = 'id'
    item%alias = [character(63) :: ]
    list = [list, item]


    item%name = 'status'
    item%alias = [character(63) :: 'state', 'validity', 'test']
    list = [list, item]

    !item%name = 'other'
    !item%alias = [character(63) :: 'extra', 'additional', 'more']
    !list = [list, item]


    do i = 1, SIZE(list)
        write (OUTPUT_UNIT, '(/"name: ", A,/,"aliases: ", *(A,:,","))') &
            TRIM(list(i)%name), &
            (TRIM(list(i)%alias(j)), j = 1, SIZE(list(i)%alias))
    enddo

end program test_lhs_allocate



The actual output is:

...:~$ gfortran-4.9 -std=f2008 test_lhs_allocate.f90 
...:~$ ./a.out 

name: name
aliases: ���

name: id
aliases: 

name: status
aliases: state,validity,test



What is expected:

name: name
aliases: label

name: id
aliases: 

name: status
aliases: state,validity



If I enable the three commented lines, then the output is:

...:~$ gfortran-4.9 -std=f2008 test_lhs_allocate.f90 
...:~$ ./a.out 

name: name
aliases: ���

name: id
aliases: 

name: status
aliases: name,�����������id,                                                
�����

name: other
aliases: extra,additional,more



It seems as if every time an item is added to the list, all the aliases in the
previous items are lost.

The system information is:

...:~$ ll `which gfortran-4.9` && /usr/lib/gcc-snapshot/bin/gfortran -v &&
apt-cache policy gfortran-4.8 gcc-snapshot && lsb_release -rd
lrwxrwxrwx 1 root staff 34 Jul  5 12:58 /usr/local/bin/gfortran-4.9 ->
/usr/lib/gcc-snapshot/bin/gfortran*
Using built-in specs.
COLLECT_GCC=/usr/lib/gcc-snapshot/bin/gfortran
COLLECT_LTO_WRAPPER=/usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 20130620-1'
--with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs
--enable-languages=c,ada,c++,java,go,fortran,objc,obj-c++
--prefix=/usr/lib/gcc-snapshot --enable-shared --enable-linker-build-id
--disable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-snap-amd64/jre
--enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-snap-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-snap-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --with-tune=generic --disable-werror
--enable-checking=yes --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.0 20130620 (experimental) [trunk revision 200244] (Debian
20130620-1) 
gfortran-4.8:
  Installed: 4.8.1-5
  Candidate: 4.8.1-5
  Version table:
 *** 4.8.1-5 0
        200 http://ftp.us.debian.org/debian/ unstable/main amd64 Packages
        100 /var/lib/dpkg/status
     4.8.1-2 0
        500 http://ftp.us.debian.org/debian/ testing/main amd64 Packages
gcc-snapshot:
  Installed: 20130620-1
  Candidate: 20130620-1
  Version table:
 *** 20130620-1 0
        200 http://ftp.us.debian.org/debian/ unstable/main amd64 Packages
        100 /var/lib/dpkg/status
Description:    Debian GNU/Linux testing (jessie)
Release:    testing

Reply via email to