https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64397

            Bug ID: 64397
           Summary: memory allocation failed with parenthesis
           Product: gcc
           Version: 4.9.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: patnel97269-gfortran at yahoo dot fr

Hi all, 

I want to report a bug which i describe orignially here,
https://gcc.gnu.org/ml/fortran/2014-12/msg00117.html .

The expression (a+b) works well, while ((a)+(b)) triggers a memory allocation
issue. And its works fine, if there is no allocatable components in the type.

Janus Weil worked out a reduce test case below, and can  reproduce the segfault
with various versions of gfortran (4.7, 4.8, 4.9 and trunk) : 

module num

  type :: my_integer
    real, allocatable :: x(:)
  contains
    procedure :: ass
    generic :: assignment(=) => ass
  end type

contains

  subroutine ass(a,b)
    class(my_integer), intent(out) :: a
    class(my_integer), intent(in) :: b
    select type (b)
    type is (my_integer)
      allocate(a%x(size(b%x)))
      a%x = b%x
    end select
    print *,'called ass'
  end subroutine

end module

program main
  use num
  type(my_integer) :: a, c
  a=my_integer([1])
  write (*,*) "C: ",c%x
  c = a
  write (*,*) "C: ",c%x
  c = (a)
  write (*,*) "C: ",c%x
end

Thanks
Pat.

Reply via email to