PR fortran/98661 - valgrind issues with error recovery
During error recovery after an invalid derived type specification it was possible to try to resolve an invalid array specification. We now skip this if the component has the ALLOCATABLE or POINTER attribute and the shape is not deferred. gcc/fortran/ChangeLog: PR fortran/98661 * resolve.c (resolve_component): Derived type components with ALLOCATABLE or POINTER attribute shall have a deferred shape. gcc/testsuite/ChangeLog: PR fortran/98661 * gfortran.dg/pr98661.f90: New test.
This commit is contained in:
parent
c1a2cf8805
commit
9e1e6e6310
@ -14723,6 +14723,10 @@ resolve_component (gfc_component *c, gfc_symbol *sym)
|
||||
&& sym != c->ts.u.derived)
|
||||
add_dt_to_dt_list (c->ts.u.derived);
|
||||
|
||||
if (c->as && c->as->type != AS_DEFERRED
|
||||
&& (c->attr.pointer || c->attr.allocatable))
|
||||
return false;
|
||||
|
||||
if (!gfc_resolve_array_spec (c->as,
|
||||
!(c->attr.pointer || c->attr.proc_pointer
|
||||
|| c->attr.allocatable)))
|
||||
|
19
gcc/testsuite/gfortran.dg/pr98661.f90
Normal file
19
gcc/testsuite/gfortran.dg/pr98661.f90
Normal file
@ -0,0 +1,19 @@
|
||||
! { dg-do compile }
|
||||
! PR fortran/98661 - valgrind issues with error recovery
|
||||
!
|
||||
! Test issues related to former testcase charlen_03.f90
|
||||
program p
|
||||
implicit none
|
||||
type t
|
||||
character(:), pointer :: c(n) ! { dg-error "must have a deferred shape" }
|
||||
real, allocatable :: x(n) ! { dg-error "must have a deferred shape" }
|
||||
end type
|
||||
end
|
||||
|
||||
subroutine s
|
||||
! no 'implicit none'
|
||||
type u
|
||||
character(:), pointer :: c(n) ! { dg-error "must have a deferred shape" }
|
||||
real, allocatable :: x(n) ! { dg-error "must have a deferred shape" }
|
||||
end type
|
||||
end
|
Loading…
Reference in New Issue
Block a user