[Bug fortran/70937] [7 Regression] ICE: tree code ‘ssa_name’ is not supported in LTO streams

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed May 4 09:01:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70937

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org
          Component|middle-end                  |fortran
   Target Milestone|---                         |7.0
            Summary|[7.0 Regression] ICE: tree  |[7 Regression] ICE: tree
                   |code ‘ssa_name’ is not      |code ‘ssa_name’ is not
                   |supported in LTO streams    |supported in LTO streams

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
This is fallout of gimplify-into-SSA and another case where SAVE_EXPRs inside
type sizes are corrupted.  I fixed one testsuite occurance with

2016-05-02  Richard Biener  <rguenther@suse.de>

        * trans-array.c (gfc_trans_create_temp_array): Properly
        create a DECL_EXPR for the anonymous VLA array type.

but suspected more places need fixing.  The affected type is constructed via

#0  0x00000000009291a3 in gfc_get_character_type_len_for_eltype (
    eltype=<integer_type 0x7ffff688b540 character(kind=1)>, 
    len=<parm_decl 0x7ffff6a37280 _args>)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-types.c:1026
#1  0x0000000000929214 in gfc_get_character_type_len (kind=1, 
    len=<parm_decl 0x7ffff6a37280 _args>)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-types.c:1036
#2  0x00000000009292d8 in gfc_get_character_type (kind=1, cl=0x26c9420)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-types.c:1051
#3  0x00000000009293d5 in gfc_typenode_for_spec (spec=0x26c8040)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-types.c:1095
#4  0x00000000008a78b6 in gfc_build_dummy_array_decl (sym=0x26c8020, 
    dummy=<parm_decl 0x7ffff6a37300 args>)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-decl.c:1106
#5  0x00000000008a8dad in gfc_get_symbol_decl (sym=0x26c8020)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-decl.c:1471
#6  0x00000000008b6e4d in generate_local_decl (sym=0x26c8020)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-decl.c:5220
#7  0x000000000085fd94 in do_traverse_symtree (st=0x26c77b0, st_func=0x0, 
    sym_func=0x8b6d89 <generate_local_decl(gfc_symbol*)>)
    at /space/rguenther/src/svn/trunk/gcc/fortran/symbol.c:3817

and it needs to be handled similarly.  Possibly somewhere here:

#4  0x00000000008a78b6 in gfc_build_dummy_array_decl (sym=0x26c8020, 
    dummy=<parm_decl 0x7ffff6a37300 args>)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-decl.c:1106
1106                               : gfc_typenode_for_spec (&sym->ts);
(gdb) l
1101            }
1102
1103          /* For classarrays the element type is required, but
1104             gfc_typenode_for_spec () returns the array descriptor.  */
1105          type = is_classarray ? gfc_get_element_type (type)
1106                               : gfc_typenode_for_spec (&sym->ts);
1107          type = gfc_get_nodesc_array_type (type, as, packed,
1108                                            !sym->attr.target);

or here:

#5  0x00000000008a8dad in gfc_get_symbol_decl (sym=0x26c8020)
    at /space/rguenther/src/svn/trunk/gcc/fortran/trans-decl.c:1471
1471              decl = gfc_build_dummy_array_decl (sym, sym->backend_decl);
(gdb) l
1466
1467          /* Use a copy of the descriptor for dummy arrays.  */
1468          if ((sym->attr.dimension || sym->attr.codimension)
1469             && !TREE_USED (sym->backend_decl))
1470            {
1471              decl = gfc_build_dummy_array_decl (sym, sym->backend_decl);
1472              /* Prevent the dummy from being detected as unused if it is
copied.  */
1473              if (sym->backend_decl != NULL && decl != sym->backend_decl)
1474                DECL_ARTIFICIAL (sym->backend_decl) = 1;
1475              sym->backend_decl = decl;


More information about the Gcc-bugs mailing list