summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/pr38722.f90
blob: 7a4f63e869c081cbd7e1085d3e2354fd84d7bbca (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
34
35
36
37
38
! PR rtl-optimization/38722
! { dg-do compile }
! { dg-options "-O1" }
SUBROUTINE foo(x, n, ga, gc, vr)
  TYPE pt
    DOUBLE PRECISION, DIMENSION (:, :, :), POINTER :: cr
  END TYPE pt
  TYPE pu
    TYPE(pt), POINTER :: pw
  END TYPE pu
  LOGICAL, INTENT(in) :: x, ga, gc
  INTEGER :: i, n
  LOGICAL :: dd, ep, fe
  TYPE(pu) :: vr
  TYPE(pu), DIMENSION(:), POINTER :: v
  IF (.NOT. fe) THEN
     IF (ga) THEN
        CALL bar (dd, ep, gc)
     END IF
     IF (x .AND. .NOT. ga) THEN
        IF (gc) THEN
          DO i=1,n
            CALL baz (v(i), x, gc)
            v(i)%pw%cr = 1.0
          END DO
          DO i=1,n
             IF (ep) THEN
                IF (dd) THEN
                   IF (i==1) THEN
                      v(i)%pw%cr=v(i)%pw%cr + vr%pw%cr
                   ENDIF
                END IF
             END IF
          END DO
        END IF
     ENDIF
  END IF
END SUBROUTINE foo