+2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/37753
+ * gfortran.dg/convert_2.f90: New test case.
+
2008-10-09 Daniel Kraft <d@domob.eu>
PR fortran/35723
--- /dev/null
+! { dg-do run }
+! Check for correct ordering of character variables with CONVERT
+
+program main
+ implicit none
+ integer, parameter :: two_swap = 2**25
+ integer(kind=4) i,j
+ character(len=2) :: c,d
+ open(20,file="convert.dat",form="unformatted",convert="swap") ! { dg-warning "CONVERT" }
+ write (20) "ab"
+ close (20)
+ open(20,file="convert.dat",form="unformatted",access="stream")
+ read(20) i,c,j
+ if (i .ne. two_swap .or. j .ne. two_swap .or. c .ne. "ab") call abort
+ close (20)
+ open(20,file="convert.dat",form="unformatted",convert="swap") ! { dg-warning "CONVERT" }
+ read (20) d
+ close (20,status="delete")
+ if (d .ne. "ab") call abort
+end program main
+2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/37753
+ * io/transfer.c (unformatted_read): CONVERT_NATIVE
+ is the usual case. Check for kind==1 for non-byte-reversing
+ operation.
+ (unformatted_write): Likewise.
+
2008-10-08 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37707
{
size_t i, sz;
- if (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE
- || size == 1)
+ if (likely (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE)
+ || kind == 1)
{
sz = size * nelems;
if (type == BT_CHARACTER)
unformatted_write (st_parameter_dt *dtp, bt type,
void *source, int kind, size_t size, size_t nelems)
{
- if (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE ||
- size == 1)
+ if (likely (dtp->u.p.current_unit->flags.convert == GFC_CONVERT_NATIVE)
+ || kind == 1)
{
size_t stride = type == BT_CHARACTER ?
size * GFC_SIZE_OF_CHAR_KIND(kind) : size;