aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2013-06-13 14:30:17 +0000
committerMikael Morin <mikael@gcc.gnu.org>2013-06-13 14:30:17 +0000
commitfffad99bde9d1da856f35d714a94e8249fdce1f7 (patch)
treebe5b1044e2293d152cb52d7f6a48ce74e7bdf24b /gcc
parent37ea263afa8f68bc7a6fcda19a47eb645624ecb7 (diff)
downloadgcc-fffad99bde9d1da856f35d714a94e8249fdce1f7.zip
gcc-fffad99bde9d1da856f35d714a94e8249fdce1f7.tar.gz
gcc-fffad99bde9d1da856f35d714a94e8249fdce1f7.tar.bz2
Commit forgotten file
From-SVN: r200070
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_assignment_5.f0340
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/typebound_assignment_5.f03 b/gcc/testsuite/gfortran.dg/typebound_assignment_5.f03
new file mode 100644
index 0000000..33fc38f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_assignment_5.f03
@@ -0,0 +1,40 @@
+! { dg-do run }
+!
+! PR fortran/49074
+! ICE on defined assignment with class arrays.
+
+ module foo
+ type bar
+ integer :: i
+
+ contains
+
+ generic :: assignment (=) => assgn_bar
+ procedure, private :: assgn_bar
+ end type bar
+
+ contains
+
+ elemental subroutine assgn_bar (a, b)
+ class (bar), intent (inout) :: a
+ class (bar), intent (in) :: b
+
+ select type (b)
+ type is (bar)
+ a%i = b%i
+ end select
+
+ return
+ end subroutine assgn_bar
+ end module foo
+
+ program main
+ use foo
+
+ type (bar), allocatable :: foobar(:)
+
+ allocate (foobar(2))
+ foobar = [bar(1), bar(2)]
+ if (any(foobar%i /= [1, 2])) call abort
+ end program
+