This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Re: possible bug for function returning derived type (trunk binaries)
It is now PR38802
Paul
On Sun, Jan 11, 2009 at 1:08 PM, Paul Richard Thomas
<paul.richard.thomas@gmail.com> wrote:
> Dear Marco,
>
> Many thanks for this report. A temporary workaround is not to use
> RESULT for a_fun. This works:
>
> module mod_a
> type t_1
> real :: coeff
> end type t_1
> type t_2
> type(t_1), allocatable :: mons(:)
> end type t_2
> contains
> function a_fun(r)
> integer, intent(in) :: r
> type(t_2) :: a_fun(r+1) !!!!!!!!!!!!!!!!!!!!!
> write(*,*) 'shape(p) is ', shape(a_fun)
> end function a_fun
> end module mod_a
>
>
> program test
> use mod_a, only: a_fun, t_1, t_2
> implicit none
> type(t_2) x(1)
> x = a_fun(0)
> end program test
>
> I am just going to file a PR on it.
>
> I wonder if, since you are becoming a regular, you could please start
> filing you reports in Bugzilla? It would be very helpful to us since
> even the few minutes spent doing it is time lost to fixing things:-(
>
> Cheers
>
> Paul
>
> On Sat, Jan 10, 2009 at 10:54 AM, marco restelli <mrestelli@gmail.com> wrote:
>> Dear all,
>> the attached code produces a segmentation fault with the latest
>> trunk binaries. The code looks fine to me, and it runs with ifort and
>> g95.
>>
>> Best regards,
>> Marco Restelli
>>
>>
>> $ gfortran test.f90 -o test
>> $ ./test
>> Segmentation fault
>>
>> $ gfortran --version
>> GNU Fortran (GCC) 4.4.0 20090110 (experimental) [trunk revision 143243]
>>
>> System:
>> Linux 2.6.23-gentoo-r6 x86_64 AMD Turion(tm) 64 Mobile Technology
>> ML-32 AuthenticAMD GNU/Linux
>>
>>
>> module mod_a
>> implicit none
>> public :: a_fun, t_1, t_2
>> private
>>
>> type t_1
>> real :: coeff
>> end type t_1
>>
>> type t_2
>> type(t_1), allocatable :: mons(:)
>> end type t_2
>>
>> contains
>>
>> function a_fun(r) result(p)
>> integer, intent(in) :: r
>>
>> type(t_2) :: p(r+1)
>> ! Using an allocatable works
>> !type(t_2), allocatable :: p(:)
>> ! allocate(p(r+1))
>>
>> write(*,*) 'shape(p) is ', shape(p)
>>
>> end function a_fun
>>
>> end module mod_a
>>
>>
>> program test
>> use mod_a, only: a_fun, t_1, t_2
>> implicit none
>> type(t_2) x(1)
>>
>> x = a_fun(0)
>> end program test
>>
>
>
>
> --
> The knack of flying is learning how to throw yourself at the ground and miss.
> --Hitchhikers Guide to the Galaxy
>
--
The knack of flying is learning how to throw yourself at the ground and miss.
--Hitchhikers Guide to the Galaxy