39 lines
906 B
Fortran
39 lines
906 B
Fortran
! 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
|