http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51976



--- Comment #8 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2013-02-10 
19:59:37 UTC ---

With the patch in comment #7 most of the duplicates compile and run, but:



pr49050 which gives



pr49050.f90:13.10:



   item = item_type('key')

          1

Error: No initializer for component '_key' given in the structure constructor

at (1)!



(note that the original code at 

http://gcc.gnu.org/ml/fortran/2011-05/msg00129.html compiles but segfault at

runtime);



pr51550 which gives an ICE



gimplification failed:

0 <integer_cst 0x14280bc80 type <integer_type 0x1428125e8 integer(kind=4)>

constant 0>

pr51550.f90: In function 'add_key_only':

pr51550.f90:64:0: internal compiler error: gimplification failed

     allocate( character(len=len(key)) :: value%key )

 ^



and a similar error for the test in comment #6



  type t

    character(len=:), pointer :: str

  end type t

  type(t), pointer :: strarray(:), strarray2(:)



  allocate(strarray(3), strarray2(3))

  allocate(character(len=5) :: strarray(1)%str, strarray2(1)%str)

  allocate(character(len=7) :: strarray(2)%str, strarray2(2)%str)

  allocate(character(len=2) :: strarray(2)%str, strarray2(3)%str)



!  forall(i=1:3) strarray2(i)%str = strarray(i)%str

  print *, (len(strarray2(i)%str), i=1,3)

end



gimplification failed:

0 <integer_cst 0x14280bc80 type <integer_type 0x1428125e8 integer(kind=4)>

constant 0>

pr51976_1.f90: In function 'MAIN__':

pr51976_1.f90:7:0: internal compiler error: gimplification failed

   allocate(character(len=5) :: strarray(1)%str, strarray2(1)%str)

 ^



If the FORALL is uncommented, the ICE is



pr51976_1.f90: In function 'MAIN__':

pr51976_1.f90:11:0: internal compiler error: in gfc_add_modify_loc, at

fortran/trans.c:159

   forall(i=1:3) strarray2(i)%str = strarray(i)%str

 ^



At runtime the test attached to pr48654 gives a segmentation fault (fixed by

the revised patch sent privately).



The iso_varying_string I have in store also compiles and run (limited testing).

Reply via email to