------- 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

Reply via email to