http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339
--- Comment #3 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2010-11-13
07:11:57 UTC ---
This avoids the segfault. But what is lang_specific and why is it not set in
problem case? Where does it normally get set?
Index: trans-expr.c
===================================================================
--- trans-expr.c (revision 166686)
+++ trans-expr.c (working copy)
@@ -4881,7 +4881,8 @@
/* If this is a subreference array pointer assignment, use the rhs
descriptor element size for the lhs span. */
- if (expr1->symtree->n.sym->attr.subref_array_pointer)
+ if (expr1->symtree->n.sym->attr.subref_array_pointer
+ && expr1->symtree->n.sym->backend_decl->decl_common.lang_specific)
{
decl = expr1->symtree->n.sym->backend_decl;
gfc_init_se (&rse, NULL);