------- Comment #2 from mikael at gcc dot gnu dot org  2008-12-16 15:35 -------
Yes, confirmed. 

The offending line is:
call foo(func("_"//bar()))

In trans-expr.c, se->loop is NULL in the gcc_assert:
2844       else if (sym->result->attr.dimension)
2845         {
2846           gcc_assert (se->loop && info);
2847 
2848           /* Set the type of the array.  */
2849           tmp = gfc_typenode_for_spec (&ts);
2850           info->dimen = se->loop->dimen;
2851 

backtrace:
(gdb) bt
#0  fancy_abort (file=0xbe0240 "../../src/gcc/fortran/trans-expr.c", 
    line=2846, function=0xbe0b40 "gfc_conv_function_call")
    at ../../src/gcc/diagnostic.c:711
#1  0x00000000004b2e0a in gfc_conv_function_call (se=0x7fff89088320, 
    sym=0x2738da0, arg=<value optimized out>, 
    append_args=<value optimized out>)
    at ../../src/gcc/fortran/trans-expr.c:2846
#2  0x00000000004b367b in gfc_conv_function_expr (se=0x7fff89088320, 
    expr=<value optimized out>) at ../../src/gcc/fortran/trans-expr.c:3345
#3  0x00000000004b61d4 in gfc_conv_expr_op (se=0x7fff890884a0, expr=0x27426e0)
    at ../../src/gcc/fortran/trans-expr.c:1147
#4  0x00000000004b7943 in gfc_conv_string_length (cl=0x2740dd0, 
    expr=<value optimized out>, pblock=0x7fff89088870)
    at ../../src/gcc/fortran/trans-expr.c:328
#5  0x000000000049cd14 in gfc_conv_expr_descriptor (se=<value optimized out>, 
    expr=<value optimized out>, ss=0x2742380)
    at ../../src/gcc/fortran/trans-array.c:4929
#6  0x00000000004bd987 in gfc_conv_intrinsic_len (se=0x7fff89088d90, 
    expr=<value optimized out>) at ../../src/gcc/fortran/trans-intrinsic.c:2906
#7  0x00000000004c01d4 in gfc_conv_intrinsic_function (se=0x7fff89088d90, 
    expr=0x2741c70) at ../../src/gcc/fortran/trans-intrinsic.c:4682
#8  0x00000000004b3633 in gfc_conv_function_expr (se=0x7fff89088d90, 
    expr=0xb1e) at ../../src/gcc/fortran/trans-expr.c:3328
#9  0x00000000004b76ea in gfc_apply_interface_mapping (mapping=0x7fff89088e30, 
    se=0x7fff89088d90, expr=0x2741c70)
    at ../../src/gcc/fortran/trans-expr.c:2145
#10 0x000000000049d5bf in gfc_conv_expr_descriptor (se=<value optimized out>, 
    expr=<value optimized out>, ss=0x27416b0)
    at ../../src/gcc/fortran/trans-array.c:4721
#11 0x00000000004a06a3 in gfc_conv_array_parameter (se=0x7fff89089030, 
    expr=0x2702b90, ss=0x27416b0, g77=<value optimized out>, fsym=0x273add0, 
    proc_name=0x7fff89087bb0 "") at ../../src/gcc/fortran/trans-array.c:5277
#12 0x00000000004b22d4 in gfc_conv_function_call (se=0x7fff890895f0, 
    sym=0x273ab60, arg=0x26b27b0, append_args=<value optimized out>)
    at ../../src/gcc/fortran/trans-expr.c:2691
#13 0x00000000004cf8df in gfc_trans_call (code=<value optimized out>, 
    dependency_check=0 '\0') at ../../src/gcc/fortran/trans-stmt.c:356
#14 0x00000000004943c5 in gfc_trans_code (code=0x2738340)
    at ../../src/gcc/fortran/trans.c:1117
#15 0x00000000004abe6d in gfc_generate_function_code (ns=0x2737200)
    at ../../src/gcc/fortran/trans-decl.c:3843
#16 0x0000000000493a33 in gfc_generate_module_code (ns=<value optimized out>)
    at ../../src/gcc/fortran/trans.c:1319
#17 0x0000000000461624 in gfc_parse_file ()
    at ../../src/gcc/fortran/parse.c:3855
#18 0x0000000000490c9d in gfc_be_parse_file (set_yydebug=<value optimized out>)
    at ../../src/gcc/fortran/f95-lang.c:236
#19 0x000000000074545d in toplev_main (argc=<value optimized out>, 
    argv=<value optimized out>) at ../../src/gcc/toplev.c:970
#20 0x00007f6a80694526 in __libc_start_main () from /lib/libc.so.6
#21 0x0000000000405d19 in _start ()


-- 

mikael at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-12-16 15:35:45
               date|                            |


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

Reply via email to