[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-fortran
Subject:    Re: [Ping, Patch 2/2, v3, Fortran, pr60322 a.o.] [OOP] Incorrect bounds on polymorphic dummy array
From:       dominiq () lps ! ens ! fr (Dominique Dhumieres)
Date:       2015-03-22 13:55:40
Message-ID: 20150322135540.5E773105 () mailhost ! lps ! ens ! fr
[Download RAW message or body]

Dear Andre,

If I am not mistaken, this patch make the following test (pr57305, second attachment):

    subroutine add_element_poly(a,e)
      use iso_c_binding
      class(*),allocatable,intent(inout),target :: a(:)
      class(*),intent(in),target :: e
      class(*),allocatable,target :: tmp(:)
      type(c_ptr) :: dummy
      
      interface
        function memcpy(dest,src,n) bind(C,name="memcpy") result(res)
          import
          type(c_ptr) :: res
          integer(c_intptr_t),value :: dest
          integer(c_intptr_t),value :: src
          integer(c_size_t),value :: n
        end function
      end interface

      if (.not.allocated(a)) then
        allocate(a(1), source=e)
      else
        allocate(tmp(size(a)),source=a)
        deallocate(a)
        allocate(a(size(tmp)+1),mold=e)
        dummy = memcpy(loc(a(1)),loc(tmp),sizeof(tmp))
        dummy = memcpy(loc(a(size(tmp)+1)),loc(e),sizeof(e))
      end if
    end subroutine

to give an ICE (a regression):

pr57305_1.f90:24:0:

         dummy = memcpy(loc(a(1)),loc(tmp),sizeof(tmp))
 1
internal compiler error: Segmentation fault: 11

The ICE is caused by sizeof(tmp).

TIA

Dominique
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic