summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f9036
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90 b/gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90
new file mode 100644
index 000000000..3b0c27944
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/derived_comp_array_ref_5.f90
@@ -0,0 +1,36 @@
+! { dg-do compile }
+! Tests the fix for PR33566, in which the first variable array ref
+! to v1 would cause an incompatible ranks error and the second an ICE.
+!
+! Contributed by Mikael Morin <mikael.morin@tele2.fr>
+!
+ program test_vec
+
+ implicit none
+
+
+ integer :: i
+ real :: x
+
+ type vec3
+ real, dimension(3) :: coords
+ end type vec3
+
+ type(vec3),parameter :: v1 = vec3((/ 1.0, 2.0, 3.0 /))
+ type(vec3) :: v2
+
+ v2 = vec3((/ 1.0, 2.0, 3.0 /))
+
+
+ x = v1%coords(1)
+
+ do i=1,3
+ x = v1%coords(i) ! used to fail
+ x = v2%coords(i)
+ end do
+
+ i = 2
+
+ v2 = vec3 (v1%coords ((/i+1, i, i-1/))) ! also broken
+
+ end program test_vec