[Bug fortran/89069] ICE in select type with function returning class array pointer

2022-01-14 Thread antony at cosmologist dot info via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89069

--- Comment #3 from Antony Lewis  ---
This bug is still valid as of  gcc 11.2.1 20220114


  15 | end module test
  |   1
internal compiler error: Segmentation fault
0x160a5b7 internal_error(char const*, ...)
???:0
0x764849 gfc_class_data_get(tree_node*)
???:0
0x7b0111 gfc_trans_block_construct(gfc_code*)
???:0
0x762224 gfc_generate_function_code(gfc_namespace*)
???:0
0x73c1d1 gfc_generate_module_code(gfc_namespace*)
???:0
0x6dd185 gfc_parse_file()
???:0

[Bug fortran/89069] ICE in select type with function returning class array pointer

2019-12-10 Thread gs...@t-online.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89069

G. Steinmetz  changed:

   What|Removed |Added

 CC||gs...@t-online.de

--- Comment #2 from G. Steinmetz  ---

Update :


$ cat z1.f90
program p
   select type (y => f())
   end select
contains
   function f()
  class(*), pointer :: f(:)
   end
end


$ cat z2.f90
program p
   select type (y => f())
   end select
contains
   function f()
  class(*), allocatable :: f(:)
   end
end


$ gfortran-10-20191208 -c z2.f90
f951: internal compiler error: Segmentation fault
0xb800af crash_signal
../../gcc/toplev.c:328
0x6a7c28 resolve_select_type
../../gcc/fortran/resolve.c:9158
0x698564 gfc_resolve_code(gfc_code*, gfc_namespace*)
../../gcc/fortran/resolve.c:11897
0x69a0d7 resolve_codes
../../gcc/fortran/resolve.c:17186
0x69a19e gfc_resolve(gfc_namespace*)
../../gcc/fortran/resolve.c:17221
0x68859c resolve_all_program_units
../../gcc/fortran/parse.c:6241
0x68859c gfc_parse_file()
../../gcc/fortran/parse.c:6488
0x6d306f gfc_be_parse_file
../../gcc/fortran/f95-lang.c:210


---


Similar with associate :


$ cat z4.f90
program p
   associate (y => f())
   end associate
contains
   function f()
  class(*), pointer :: f(:)
   end
end


$ cat z5.f90
program p
   associate (y => f())
   end associate
contains
   function f()
  class(*), allocatable :: f(:)
   end
end


$ gfortran-10-20191208 -c z5.f90
z5.f90:2:0:

2 |associate (y => f())
  |
internal compiler error: Segmentation fault
0xd05dff crash_signal
../../gcc/toplev.c:328
0x744fbc gfc_class_data_get(tree_node*)
../../gcc/fortran/trans-expr.c:189
0x7a03fd trans_associate_var
../../gcc/fortran/trans-stmt.c:2015
0x7a6099 gfc_trans_block_construct(gfc_code*)
../../gcc/fortran/trans-stmt.c:2283
0x709cd7 trans_code
../../gcc/fortran/trans.c:1960
0x74107d gfc_generate_function_code(gfc_namespace*)
../../gcc/fortran/trans-decl.c:6801
0x6bafe6 translate_all_program_units
../../gcc/fortran/parse.c:6302
0x6bafe6 gfc_parse_file()
../../gcc/fortran/parse.c:6541
0x705fcf gfc_be_parse_file
../../gcc/fortran/f95-lang.c:210


---


And finally, above four variants do compile with scalar items, e.g. :


$ cat za1.f90
program p
   select type (y => f())
   end select
contains
   function f()
  class(*), pointer :: f
   end
end


$ gfortran-10-20191208 -c za1.f90
$

[Bug fortran/89069] ICE in select type with function returning class array pointer

2019-01-26 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89069

Dominique d'Humieres  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2019-01-26
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres  ---
Confirmed, the backtrace is

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0xc0)
frame #0: 0x0001000a301c
f951`::resolve_select_type(code=0x000142e06170, old_ns=0x000144822e00)
at resolve.c:8958
   8955   selector_type = CLASS_DATA (code->expr2)->ts.u.derived;
   8956 }
   8957 
-> 8958   if (code->expr2->rank && CLASS_DATA (code->expr1)->as)
   8959 CLASS_DATA (code->expr1)->as->rank = code->expr2->rank;
   8960 
   8961   /* F2008: C803 The selector expression must not be coindexed.  */
Target 0: (f951) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0xc0)
  * frame #0: 0x0001000a301c
f951`::resolve_select_type(code=0x000142e06170, old_ns=0x000144822e00)
at resolve.c:8958
frame #1: 0x0001000a48c2 f951`gfc_resolve_code(code=,
ns=) at resolve.c:11518
frame #2: 0x0001000a6fd5 f951`::resolve_codes(ns=0x000144822e00) at
resolve.c:16746
frame #3: 0x0001000a6f0f f951`::resolve_codes(ns=0x000143041600) at
resolve.c:16730
frame #4: 0x0001000a70a1 f951`gfc_resolve(ns=0x000143041600) at
resolve.c:16781
frame #5: 0x000100094a7e f951`gfc_parse_file() at parse.c:6275
frame #6: 0x0001000dd77c f951`::gfc_be_parse_file() at f95-lang.c:204
frame #7: 0x000100cb0c9a f951`::compile_file() at toplev.c:456
frame #8: 0x000101387114 f951`toplev::main(int, char**) at
toplev.c:2176
frame #9: 0x000101386fe0 f951`toplev::main(this=0x7ffeefbff10e,
argc=, argv=)
frame #10: 0x000101389981 f951`main(argc=2, argv=0x7ffeefbff148) at
main.c:39
frame #11: 0x7fff63ab6ed9 libdyld.dylib`start + 1
frame #12: 0x7fff63ab6ed9 libdyld.dylib`start + 1
(lldb) p code->expr1->ts.u.derived
(gfc_symbol *) $0 = 0x

With 4.8 up to 5 the ICE is

 end module test
 ^
internal compiler error: in gfc_conv_array_ref, at fortran/trans-array.c:3218