http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60593
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Known to fail| |4.9.0 --- Comment #1 from kargl at gcc dot gnu.org --- % gfc4x -c -Wall h.f90 h.f90: In function 'c2fchar': h.f90:29:0: internal compiler error: Segmentation fault forall (i = 1:c_str_len) res(i:i) = string_p(i) ^ no stack trace because unwind library not available Please submit a full bug report, with preprocessed source if appropriate. % cat h.f90 module stringhelper_m implicit none type :: string_t character(:), allocatable :: string end type interface len function strlen(s) bind(c,name='strlen') use iso_c_binding implicit none type(c_ptr), intent(in), value :: s integer(c_size_t) :: strlen end function end interface contains function C2FChar(c_charptr) result(res) use iso_c_binding type(c_ptr), intent(in) :: c_charptr character(:), allocatable :: res character(kind=c_char,len=1), pointer :: string_p(:) integer i, c_str_len c_str_len = int(len(c_charptr)) call c_f_pointer(c_charptr, string_p, [c_str_len]) allocate(character(c_str_len) :: res) forall (i = 1:c_str_len) res(i:i) = string_p(i) end function end module (gdb) run h.f90 Starting program: /home/sgk/work/4x/libexec/gcc/x86_64-unknown-freebsd11.0/4.9.0/f951 h.f90 c2fchar Program received signal SIGSEGV, Segmentation fault. 0x00000000007abaf4 in contains_struct_check (__s=<optimized out>, __f=<optimized out>, __l=<optimized out>, __g=<optimized out>, __t=<optimized out>, __s=<optimized out>, __f=<optimized out>, __l=<optimized out>, __g=<optimized out>) at ../../gcc4x/gcc/tree.h:2822 2822 if (tree_contains_struct[TREE_CODE (__t)][__s] != 1) (gdb) bt #0 0x00000000007abaf4 in contains_struct_check (__s=<optimized out>, __f=<optimized out>, __l=<optimized out>, __g=<optimized out>, __t=<optimized out>, __s=<optimized out>, __f=<optimized out>, __l=<optimized out>, __g=<optimized out>) at ../../gcc4x/gcc/tree.h:2822 #1 fold_convert_loc (loc=0, type=0x202c2d7e0, arg=0x0) at ../../gcc4x/gcc/fold-const.c:1956 #2 0x00000000006501f3 in allocate_temp_for_forall_nest_1 (type=0x202d6a930, size=0x202d77130, block=0x7fffffffce40, ptemp1=0x7fffffffca50) at ../../gcc4x/gcc/fortran/trans-stmt.c:3288 #3 0x0000000000650949 in allocate_temp_for_forall_nest ( nested_forall_info=<optimized out>, type=<optimized out>, inner_size=<optimized out>, inner_size_body=<optimized out>, block=<optimized out>, ptemp1=<optimized out>, nested_forall_info=<optimized out>, type=<optimized out>, inner_size=<optimized out>, inner_size_body=<optimized out>, block=<optimized out>, ptemp1=<optimized out>) at ../../gcc4x/gcc/fortran/trans-stmt.c:3319 #4 gfc_trans_assign_need_temp (expr1=0x2034ac300, expr2=0x2034ac540, wheremask=0x0, invert=false, nested_forall_info=0x2034d13c0, block=0x7fffffffce40) at ../../gcc4x/gcc/fortran/trans-stmt.c:3408 #5 0x000000000064ccb2 in gfc_trans_forall_1 (code=0x2034ac840, nested_forall_info=<optimized out>) at ../../gcc4x/gcc/fortran/trans-stmt.c:3886 #6 0x00000000005eb15e in trans_code (code=<optimized out>, cond=0x0) at ../../gcc4x/gcc/fortran/trans.c:1786 #7 0x00000000006127cc in gfc_generate_function_code (ns=0x20344b400) at ../../gcc4x/gcc/fortran/trans-decl.c:5610 #8 0x00000000005eb5ae in gfc_generate_module_code (ns=<optimized out>) at ../../gcc4x/gcc/fortran/trans.c:1972 #9 0x000000000058eb95 in translate_all_program_units ( gfc_global_ns_list=<optimized out>, main_in_tu=<optimized out>) at ../../gcc4x/gcc/fortran/parse.c:4523 #10 gfc_parse_file () at ../../gcc4x/gcc/fortran/parse.c:4733 #11 0x00000000005d72ea in gfc_be_parse_file () at ../../gcc4x/gcc/fortran/f95-lang.c:188 #12 0x0000000000a0978a in compile_file () at ../../gcc4x/gcc/toplev.c:548 #13 0x0000000000a0958b in do_compile () at ../../gcc4x/gcc/toplev.c:1914 #14 toplev_main (argc=2, argv=0x7fffffffd4d8) at ../../gcc4x/gcc/toplev.c:1990 #15 0x00000000005134af in _start ()