From 57c6def418f116f355d3d5eb71f4dd5003eefb0b Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Thu, 19 Sep 2013 00:19:03 +0200 Subject: [PATCH] re PR fortran/57697 ([OOP] Segfault with defined assignment for components during intrinsic assignment) 2013-09-18 Tobias Burnus PR fortran/57697 * gfortran.dg/defined_assignment_11.f90: New. From-SVN: r202725 --- gcc/testsuite/ChangeLog | 5 +++ .../gfortran.dg/defined_assignment_11.f90 | 43 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/defined_assignment_11.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4ed1d8b943b..8b6304f0ef2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-18 Tobias Burnus + + PR fortran/57697 + * gfortran.dg/defined_assignment_11.f90: New. + 2013-09-18 Vladimir Makarov 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 00000000000..ec297d5492a --- /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