diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/where_operator_assign_4.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/where_operator_assign_4.f90 | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/where_operator_assign_4.f90 b/gcc/testsuite/gfortran.dg/where_operator_assign_4.f90 new file mode 100644 index 000000000..e1c479e5f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/where_operator_assign_4.f90 @@ -0,0 +1,31 @@ +! { dg-do compile } +! PR fortran/34661 ICE on user-defined assignments in where statements +! Testcase contributed by Joost VandeVondele + +MODULE M1 + IMPLICIT NONE + TYPE T1 + INTEGER :: I + END TYPE T1 + INTERFACE ASSIGNMENT(=) + MODULE PROCEDURE S1 + END INTERFACE +CONTAINS + SUBROUTINE S1(I,J) + TYPE(T1), INTENT(OUT) :: I(2) + TYPE(T1), INTENT(IN) :: J(2) + I%I=-J%I + END SUBROUTINE S1 +END MODULE M1 + +USE M1 +TYPE(T1) :: I(2),J(2) +I(:)%I=1 +WHERE (I(:)%I>0) + J=I ! { dg-error "Non-ELEMENTAL user-defined assignment in WHERE" } +END WHERE + +WHERE (I(:)%I>0) J=I ! { dg-error "Non-ELEMENTAL user-defined assignment in WHERE" } + +END +! { dg-final { cleanup-modules "m1" } } |