1! { dg-do run }
2! Tests the fix for PR42309, in which the indexing of 'Q'
3! was off by one.
4!
5! Contributed by Gilbert Scott <gilbert.scott@easynet.co.uk>
6!
7PROGRAM X
8  TYPE T
9    INTEGER :: I
10    REAL :: X
11  END TYPE T
12  TYPE(T), TARGET :: T1(0:3)
13  INTEGER, POINTER :: P(:)
14  REAL :: SOURCE(4) = [10., 20., 30., 40.]
15
16  T1%I = [1, 2, 3, 4]
17  T1%X = SOURCE
18  P => T1%I
19  CALL Z(P)
20  IF (ANY (T1%I .NE. [999, 2, 999, 4])) STOP 1
21  IF (ANY (T1%X .NE. SOURCE)) STOP 2
22CONTAINS
23  SUBROUTINE Z(Q)
24    INTEGER, POINTER :: Q(:)
25    Q(1:3:2) = 999
26  END SUBROUTINE Z
27END PROGRAM X
28
29