summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/char_length_15.f90
blob: 700da0eb1755e44abe551b719de29c3c79315bf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
! { 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)) call abort
  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)) call abort
end