[Bug fortran/38471] [4.3/4.4 Regression] ICE with subreference pointer assignment

pault at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Dec 11 11:22:00 GMT 2008



------- Comment #6 from pault at gcc dot gnu dot org  2008-12-11 11:21 -------
This cures the ICE and allows correct code within the subroutine.  'span' is
not transferred in the call and so wrong code is produced if the pointer is
subsequently used in the caller.

I can apply it if you like.

Paul

Sorry about the rudimentary diff - the VMware images do not carry much by way
of developer's tools.

trans-decl.c

1012,1030d1011
< 
<       if (sym->attr.subref_array_pointer
<           && DECL_LANG_SPECIFIC (sym->backend_decl) == NULL)
<       gfc_allocate_lang_decl (sym->backend_decl);
< 
<       if (sym->attr.subref_array_pointer
<           && GFC_DECL_SPAN (sym->backend_decl) == NULL)
<       {
<         tree span;
<         GFC_DECL_SUBREF_ARRAY_P (sym->backend_decl) = 1;
<         span = build_decl (VAR_DECL, create_tmp_var_name ("span"),
<                            gfc_array_index_type);
<         gfc_finish_var_decl (span, sym);
<         TREE_STATIC (span) = TREE_STATIC (sym->backend_decl);
<         DECL_ARTIFICIAL (span) = 1;
<         DECL_INITIAL (span) = build_int_cst (gfc_array_index_type, 0);
< 
<         GFC_DECL_SPAN (sym->backend_decl) = span;
<       }


-- 


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



More information about the Gcc-bugs mailing list