2 program char_pointer_assign
\r
3 ! Test character pointer assignments, required
\r
4 ! to fix PR18890 and PR21297
\r
5 ! Provided by Paul Thomas pault@gcc.gnu.org
\r
7 character*4, target :: t1
\r
8 character*4, target :: t2(4) =(/"lmno","lmno","lmno","lmno"/)
\r
10 character*4, pointer :: c1, c3
\r
11 character*4, pointer :: c2(:), c4(:)
12 allocate (c3, c4(4))
\r
14 c3 = "lmno" ! pointer = constant
\r
15 t1 = c3 ! target = pointer
\r
16 c1 => t1 ! pointer =>target
\r
18 c3 = c1 ! pointer = pointer
\r
21 c1 => c3 ! pointer => pointer
\r
22 if (t1 /= "lnmo") call abort ()
\r
23 if (c1 /= "onml") call abort ()
\r
26 c4 = "lmno" ! pointer = constant
\r
27 t2 = c4 ! target = pointer
28 c2 => t2 ! pointer =>target
30 const(2:3) ="nm" ! c2(:)(2:3) = "nm" is still broken
\r
32 c4 = c2 ! pointer = pointer
\r
34 const(1:1) ="o" ! c4(:)(1:1) = "o" is still broken
\r
35 const(4:4) ="l" ! c4(:)(4:4) = "l" is still broken
\r
37 c2 => c4 ! pointer => pointer
\r
38 if (any (t2 /= "lnmo")) call abort ()
\r
39 if (any (c2 /= "onml")) call abort ()
\r
41 end program char_pointer_assign