This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/38915] New: wrong results for structure assignment of character components when left and right sides overlap


The following program gives the wrong results for the character assignments to
a structure component.  The problem appears to occur when there is an overlap
between the left and right hand sides of the assignment.  It is "as if" the
character length of the right hand side is treated as 1, rather than 9, and
then the left is blank padded to 9.  While experimenting with this, I tried
some simple things like L(1:2)%c = R(2:3)%c and they all worked.

Dick Hendrickson

       program cg0033_41

! fails on Windows XP
! gcc version 4.4.0 20081219 (experimental) [trunk revision 142842] (GCC)

       type t
         sequence
         integer i
         character(len=9) c
       end type t

       type (t)  L(3),R(3), LL(4), RR(4)
       EQUIVALENCE (L,LL)

       integer nfv1(3), nfv2(3)

       R(1)%c = '123456789'
       R(2)%c = 'abcdefghi'
       R(3)%c = '!@#$%^&*('

       L%c = R%c
       print *, 'simple assignment'
       print *,  R%c
       print *,  L%c

       LL(1:3)%c = R%c
       LL(4)%c = 'QWERTYUIO'
       RR%c = LL%c

       L%c = LL(2:4)%c

       print *
       print *, 'overlapping assignment'
       print *,  RR(2:4)%c
       print *,  L%c

       nfv1 = (/1,2,3/)
       nfv2 = nfv1
       L%c = R%c
       L(nfv1)%c = L(nfv2)%c
       print *
       print *, ' vvs assignment'
       print *,  R%c
       print *,  L%c

       end


C:\gfortran>gfortran try_cg0033_41.f

C:\gfortran>a
 simple assignment
 123456789abcdefghi!@#$%^&*(
 123456789abcdefghi!@#$%^&*(

 overlapping assignment
 abcdefghi!@#$%^&*(QWERTYUIO
 a        !        Q

  vvs assignment
 123456789abcdefghi!@#$%^&*(
 1        a        !


-- 
           Summary: wrong results for structure assignment of character
                    components when left and right sides overlap
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dick dot hendrickson at gmail dot com


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]