[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