http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51383
Bug #: 51383
Summary: arrays of extended types interact break associations
with arrays
Classification: Unclassified
Product: gcc
Version: 4.6.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: [email protected]
ReportedBy: [email protected]
An ASSOCIATE block that associates a name with an array of derived types causes
a compiler error.
It is easily reproduced with the following short program:
program extend
type :: a
integer :: i
end type a
type, extends (a) :: b
integer :: j
end type b
type (a) :: x(2)
type (b) :: y(2)
associate (x1 => x, y1 => y)
x1(1)%i = 1
! Commenting out the following line will avoid the error
y1(1)%i = 2
end associate
end program extend
In my version, I get the following error:
## start error message ##
associate.f90:1.14:
program extend
1
Internal Error at (1):
find_array_spec(): Component not found
## end error message ##
This example is trivial, of course (just use y instead of y1 and all is well),
but if the association is something like
associate (y1 => really_long%complicated(3)%variable(2)%array)
it becomes more than a triviality....
As can be seen from the example above, this bug does not occur for "normal"
derived types, only ones created with the EXTENDS key word.