[multiple changes]
2016-01-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/69385 * trans-expr.c (is_scalar_reallocatable_lhs): Remove the check for allocatable components, whilst checking if the symbol is a derived or class entity.. 2015-01-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/69385 * gfortran.dg/alloc_comp_assign_15.f03: New test. From-SVN: r232904
This commit is contained in:
parent
9525851d49
commit
49847d759f
@ -1,3 +1,10 @@
|
|||||||
|
2016-01-27 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/69385
|
||||||
|
* trans-expr.c (is_scalar_reallocatable_lhs): Remove the check
|
||||||
|
for allocatable components, whilst checking if the symbol is a
|
||||||
|
derived or class entity..
|
||||||
|
|
||||||
2016-01-26 Paul Thomas <pault@gcc.gnu.org>
|
2016-01-26 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/69385
|
PR fortran/69385
|
||||||
|
@ -8901,10 +8901,11 @@ is_scalar_reallocatable_lhs (gfc_expr *expr)
|
|||||||
&& !expr->ref)
|
&& !expr->ref)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
/* All that can be left are allocatable components. */
|
/* All that can be left are allocatable components. However, we do
|
||||||
if ((expr->symtree->n.sym->ts.type != BT_DERIVED
|
not check for allocatable components here because the expression
|
||||||
|
could be an allocatable component of a pointer component. */
|
||||||
|
if (expr->symtree->n.sym->ts.type != BT_DERIVED
|
||||||
&& expr->symtree->n.sym->ts.type != BT_CLASS)
|
&& expr->symtree->n.sym->ts.type != BT_CLASS)
|
||||||
|| !expr->symtree->n.sym->ts.u.derived->attr.alloc_comp)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Find an allocatable component ref last. */
|
/* Find an allocatable component ref last. */
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2015-01-27 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/69385
|
||||||
|
* gfortran.dg/alloc_comp_assign_15.f03: New test.
|
||||||
|
|
||||||
2016-01-27 Jakub Jelinek <jakub@redhat.com>
|
2016-01-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR debug/66869
|
PR debug/66869
|
||||||
|
32
gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03
Normal file
32
gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
! { dg-do run }
|
||||||
|
!
|
||||||
|
! Check the test for PR69422, in which the allocatable component 'Source'
|
||||||
|
! of the pointer component 'P' was not automatically (re)allocated on
|
||||||
|
! assignment.
|
||||||
|
!
|
||||||
|
! Contributed by Anthony Lewis <antony@cosmologist.info>
|
||||||
|
!
|
||||||
|
module funcs
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
Type T
|
||||||
|
character(LEN=:), allocatable :: source
|
||||||
|
end type T
|
||||||
|
|
||||||
|
type TPointer
|
||||||
|
Type(T), pointer :: P
|
||||||
|
end type TPointer
|
||||||
|
|
||||||
|
end module
|
||||||
|
|
||||||
|
program Test1
|
||||||
|
use funcs
|
||||||
|
Type(TPointer) :: X
|
||||||
|
|
||||||
|
allocate(X%P)
|
||||||
|
|
||||||
|
X%P%Source = 'test string'
|
||||||
|
if (.not.allocated (X%P%Source)) call abort
|
||||||
|
if (X%P%Source .ne. 'test string') call abort
|
||||||
|
|
||||||
|
end program Test1
|
Loading…
Reference in New Issue
Block a user