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 123456789abcdefg...@#$%^&*( 123456789abcdefg...@#$%^&*( overlapping assignment abcdefg...@#$%^&*(QWERTYUIO a ! Q vvs assignment 123456789abcdefg...@#$%^&*( 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