Commit 85627e2a by Jerry DeLisle

re PR fortran/84387 (Defined output does not work for a derived type that has no components)

2019-02-23  Jerry DeLisle <jvdelisle@gcc.gnu.org>

	PR fortran/84387
	* trans-io.c (transfer_expr): Do not return if there are no
	components to the derived type or class.

	* gfortran.dg/dtio_34.f90: New test.

From-SVN: r269161
parent 3aab3d37
2019-02-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/84387
* trans-io.c (transfer_expr): Do not return if there are no
components to the derived type or class.
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/88117
......
......@@ -2407,8 +2407,6 @@ transfer_expr (gfc_se * se, gfc_typespec * ts, tree addr_expr,
case_bt_struct:
case BT_CLASS:
if (ts->u.derived->components == NULL)
return;
if (gfc_bt_struct (ts->type) || ts->type == BT_CLASS)
{
gfc_symbol *derived;
......
2019-02-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/84387
* gfortran.dg/dtio_34.f90: New test.
2019-02-23 Marek Polacek <polacek@redhat.com>
PR c++/88294 - ICE with non-constant noexcept-specifier.
......
! { dg-do run }
! PR84387 Defined output does not work for a derived type that
! has no components
module m
type :: t
private
!integer :: m_i = 0 !<-- ***
contains
private
procedure, pass(this) :: write_t
generic, public :: write(formatted) => write_t
end type
contains
subroutine write_t(this, lun, iotype, vlist, istat, imsg)
! argument definitions
class(t), intent(in) :: this
integer, intent(in) :: lun
character(len=*), intent(in) :: iotype
integer, intent(in) :: vlist(:)
integer, intent(out) :: istat
character(len=*), intent(inout) :: imsg
write(lun, fmt=*, iostat=istat, iomsg=imsg) "Hello World!"
return
end subroutine write_t
end module
program p
use m, only : t
type(t) :: foo
print "(dt)", foo ! { dg-output " Hello World!" }
end program
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment