| ! { dg-do run } |
| ! |
| ! Test the fix for PR38915 in which the character length of the |
| ! temporaries produced in the assignments marked below was set to |
| ! one. |
| ! |
| ! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com> |
| ! |
| program cg0033_41 |
| 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 |
| LL(1:3)%c = R%c |
| LL(4)%c = 'QWERTYUIO' |
| RR%c = LL%c ! The equivalence forces a dependency |
| L%c = LL(2:4)%c |
| if (any (RR(2:4)%c .ne. L%c)) STOP 1 |
| nfv1 = (/1,2,3/) |
| nfv2 = nfv1 |
| L%c = R%c |
| L(nfv1)%c = L(nfv2)%c ! The vector indices force a dependency |
| if (any (R%c .ne. L%c)) STOP 2 |
| end |
| |