+2018-01-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/79383
+ * gfortran.dg/dtio_31.f03: New test.
+ * gfortran.dg/dtio_32.f03: New test.
+
2018-01-11 David Malcolm <dmalcolm@redhat.com>
PR c++/43486
--- /dev/null
+! { dg-do run }
+! { dg-options="-w" }
+! PR fortran/79383
+! Contributed by Walt Brainerd <walt.brainerd at gmail dot com>
+module dollar_mod
+
+ implicit none
+
+ private
+
+ type, public :: dollar_type
+ real :: amount
+ end type dollar_type
+
+ interface write(formatted)
+ procedure :: Write_dollar
+ end interface
+
+ public :: write(formatted)
+
+ contains
+
+ subroutine Write_dollar(dollar_value, unit, b_edit_descriptor, &
+ & v_list, iostat, iomsg)
+
+ class(dollar_type), intent(in) :: dollar_value
+ integer, intent(in) :: unit
+ character(len=*), intent(in) :: b_edit_descriptor
+ integer, dimension(:), intent(in) :: v_list
+ integer, intent(out) :: iostat
+ character(len=*), intent(inout) :: iomsg
+ write(unit=unit, fmt="(f9.2)", iostat=iostat) dollar_value%amount
+ end subroutine Write_dollar
+
+end module dollar_mod
+
+program test_dollar
+
+ use, non_intrinsic :: dollar_mod, only: dollar_type, write (formatted)
+ implicit none
+
+ type(dollar_type), parameter :: wage = dollar_type(15.10)
+ character(len=10) str
+ write (str, fmt="(DT)") wage
+ if(trim(adjustl(str)) /= '15.10') call abort
+
+end program test_dollar
--- /dev/null
+! { dg-do run }
+! { dg-options="-w" }
+! PR fortran/79383
+! Contributed by Walt Brainerd <walt.brainerd at gmail dot com>
+module dollar_mod
+
+ implicit none
+
+ private
+
+ type, public :: dollar_type
+ real :: amount
+ end type dollar_type
+
+ interface write(formatted)
+ procedure :: Write_dollar
+ end interface
+
+ public :: write(formatted)
+
+ contains
+
+ subroutine Write_dollar(dollar_value, unit, b_edit_descriptor, &
+ & v_list, iostat, iomsg)
+ class(dollar_type), intent(in) :: dollar_value
+ integer, intent(in) :: unit
+ character(len=*), intent(in) :: b_edit_descriptor
+ integer, dimension(:), intent(in) :: v_list
+ integer, intent(out) :: iostat
+ character(len=*), intent(inout) :: iomsg
+ write(unit=unit, fmt="(f9.2)", iostat=iostat) dollar_value%amount
+ end subroutine Write_dollar
+
+end module dollar_mod
+
+program test_dollar
+
+ use :: dollar_mod ! with this USE, same result
+ implicit none
+
+ type(dollar_type), parameter :: wage = dollar_type(15.10)
+ character(len=10) str
+ write(str, fmt="(DT)") wage
+ if (trim(adjustl(str)) /= '15.10') call abort
+
+end program test_dollar