------- Comment #1 from dfranke at gcc dot gnu dot org 2008-02-13 20:25 ------- Confirmed.
Seems to be related to ELEMENTAL and IN probalby not having a proper array descriptor. If my_sub is written as: SUBROUTINE my_sub (in, out) TYPE(bar), DIMENSION(42, 42) :: in, out out(1, 1:42) = in(1, 1:42) ! ELEMENTAL SUBROUTINE ASSIGN_BAR END SUBROUTINE no ICE occurs. Same if the subroutine ASSIGN_BAR is called directly using the pointers from the original example, i.e.: SUBROUTINE my_sub (in, out) TYPE(bar), DIMENSION(:,:), POINTER :: in TYPE(bar), DIMENSION(:,:), POINTER :: out ALLOCATE(out(1:42, 1:42)) CALL assign_bar(out(1, 1:42), in(1, 1:42)) END SUBROUTINE The latter probably doesn't make use of the ELEMENTALness of ASSIGN_BAR. -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dfranke at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-02-13 20:25:10 date| | Summary| ICE in |ICE in |gfc_conv_array_index_offset |gfc_conv_array_index_offset http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35184