diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-09-19 00:19:03 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-09-19 00:19:03 +0200 |
commit | 57c6def418f116f355d3d5eb71f4dd5003eefb0b (patch) | |
tree | b571bcbf8efd8a5864f7ced156b76cd75d2a81c2 /gcc | |
parent | f4b525e7149244ca192862e93253258fd2cdf890 (diff) | |
download | gcc-57c6def418f116f355d3d5eb71f4dd5003eefb0b.zip gcc-57c6def418f116f355d3d5eb71f4dd5003eefb0b.tar.gz gcc-57c6def418f116f355d3d5eb71f4dd5003eefb0b.tar.bz2 |
re PR fortran/57697 ([OOP] Segfault with defined assignment for components during intrinsic assignment)
2013-09-18 Tobias Burnus <burnus@net-b.de>
PR fortran/57697
* gfortran.dg/defined_assignment_11.f90: New.
From-SVN: r202725
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/defined_assignment_11.f90 | 43 |
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4ed1d8b..8b6304f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-18 Tobias Burnus <burnus@net-b.de> + + PR fortran/57697 + * gfortran.dg/defined_assignment_11.f90: New. + 2013-09-18 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/58438 diff --git a/gcc/testsuite/gfortran.dg/defined_assignment_11.f90 b/gcc/testsuite/gfortran.dg/defined_assignment_11.f90 new file mode 100644 index 0000000..ec297d5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/defined_assignment_11.f90 @@ -0,0 +1,43 @@ +! { dg-do run } +! +! PR fortran/57697 +! +! Further test of typebound defined assignment +! +module m0 + implicit none + type :: component + integer :: i = 42 + integer, allocatable :: b + contains + procedure :: assign0 + generic :: assignment(=) => assign0 + end type + type, extends(component) :: comp2 + real :: aa + end type comp2 + type parent + type(component) :: foo + real :: cc + end type + type p2 + type(parent) :: x + end type p2 +contains + elemental subroutine assign0(lhs,rhs) + class(component), intent(INout) :: lhs + class(component), intent(in) :: rhs + lhs%i = 20 + end subroutine +end module + +program main + use m0 + implicit none + type(p2), allocatable :: left + type(p2) :: right +! print *, right%x%foo%i + left = right +! print *, left%x%foo%i + if (left%x%foo%i /= 20) call abort() +end |