diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/pr38722.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr38722.f90 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/pr38722.f90 b/gcc/testsuite/gfortran.dg/pr38722.f90 new file mode 100644 index 000000000..7a4f63e86 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr38722.f90 @@ -0,0 +1,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 |