[Bug fortran/48351] New: [OOP] Realloc on assignment fails if parent component is CLASS

burnus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 30 06:51:00 GMT 2011


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

           Summary: [OOP]  Realloc on assignment fails if parent component
                    is CLASS
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org
                CC: janus@gcc.gnu.org


http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/b7a36eba5ef7f68b
 by Nasser M. Abbasi

In the following program "%u" is allocatable. For

        this%u = u

the LHS should be allocated, but this only happens if "this" is a TYPE and not
a CLASS - but that should be completely unrelated to (re)alloc on assignment.

The program works with ifort 11.1.


module foo
    implicit none
    type :: foo_t
!      private
      DOUBLE PRECISION , ALLOCATABLE :: u(:)
      contains
        PROCEDURE :: make  ! or procedure, pass, same effect
    end type foo_t

    contains
    subroutine make(this,u)
        implicit none
        CLASS(foo_t) :: this
        DOUBLE PRECISION, intent(in) :: u(:)  ! must be CLASS
!           allocate(this%u(size(u)))  ! Must allocate now, else crash
        this%u = u
    end subroutine make
    end module foo

program main2
 use foo
 implicit none
 TYPE(foo_t) :: o
 DOUBLE PRECISION , ALLOCATABLE :: u(:)

 u=[1,2,3,4]
 CALL o%make(u)
 print *, o%u
end program main2



More information about the Gcc-bugs mailing list