[Patch, fortran] [4.7/4.8 Regression] [OOP] ICE on invalid: gfc_variable_attr(): Bad array reference
Tobias Burnus
burnus@net-b.de
Wed Jan 2 22:48:00 GMT 2013
Dear Paul,
First, the new patch is fine from my side. (Although, I think the test
case should also include the vector-section example.) Thanks for working
on that regression.
Paul Richard Thomas wrote:
> First of all, thanks for the review! I still owe you my comments on
> FINAL; I got lost in trying to fix these various regressions :-) I
> promise that I'll come back to you first thing tomorrow.
I am looking forward to them - and in particular to a patch review of
the FINAL patches. I am also interested in your comment to my LOGICAL in
BIND(C) procedures patch, namely
http://gcc.gnu.org/ml/fortran/2012-12/msg00200.html
>> It looks mostly okay; however, you do not handle vector sections correctly,
>> which leads to an ICE. Without your patch, one gets:
>> Error: CLASS selector at (1) needs a temporary which is not yet
>> implemented
>>
>> With your patch, it fails as one has:
> This was fairly easily fixed - see attached.
Thanks. By the way, I have filled a PR to track this "not yet
implemented" issue: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55849
>> I am not quite sure whether the following ICE has the same cause or a
>> different one, but it also ICEs with your patch applied:
>> select type (component => self%cb[4])
> This co-array example was never OK, as far as I can tell. The error
> is similar to that of the PR. However, co-arrays were just never
> handled at all.... again, as far as I can tell. I'll have a go at it
> tomorrow night.
I recall that we did add some coarray support for polymorphic variables.
At least with coarray arrays (contrary to coarray scalars) it seems to
compile. But it is very likely that select type never worked with
coarrays or coarray scalars.
Note that the coindexd
select type (component => self%cb[4])
is invalid (C803; PR55850 (a)). However, the same failure occurs for noncoindexed valid selector:
select type (component => self%cb)
(See also PR 55850 for some other SELECT TYPE issues I found.)
Tobias
More information about the Fortran
mailing list