[Bug fortran/60593] ICE with deferred length variable in FORALL
kargl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 19 17:38:00 GMT 2014
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 ()
More information about the Gcc-bugs
mailing list