------- Comment #8 from pault at gcc dot gnu dot org  2008-12-22 19:39 -------
Created an attachment (id=16969)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16969&action=view)
patch for the PR

This is a patch that I cannot commit until January 3rd at the earliest.  Please
could you do the honours, Jerry?  It runs all of alloc_comp*.f90 correctly but
I have NOT regtested it.

Paul

2008-12-22  Paul Thomas  <pa...@gcc.gnu.org>

        PR fortran/35780
        * trans-decl.c (init_intent_out_dt): Allow for optional args.

2008-12-22  Paul Thomas  <pa...@gcc.gnu.org>

        PR fortran/35780
        * gfortran.dg/alloc_comp_optional_1.f90: New test.

! { dg-do run }
! Tests the fix for PR38602, a regression caused by a modification
! to the nulling of INTENT_OUT dummies with allocatable components
! that caused a segfault with optional arguments.
!
! Contributed by David Kinniburgh <davidkinnibu...@yahoo.co.uk>
!
program test_iso
  type ivs
     character(LEN=1), dimension(:), allocatable :: chars
  end type ivs
  type(ivs) :: v_str
  integer :: i
  call foo(v_str, i)
  if (v_str%chars(1) .ne. "a") call abort
  if (i .ne. 0) call abort
  call foo(flag = i)
  if (i .ne. 1) call abort
contains
  subroutine foo (arg, flag)
    type(ivs), optional, intent(out) :: arg
    integer :: flag
    if (present(arg)) then
      arg = ivs([(char(i+96), i = 1,10)])
      flag = 0
    else
      flag = 1
    end if
  end subroutine
end


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED


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

Reply via email to