http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48360
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code CC| |burnus at gcc dot gnu.org, | |pault at gcc dot gnu.org Target Milestone|--- |4.6.1 Summary|ICE on array assignment |[4.6/4.7 Regression] ICE on |statement with allocatable |array assignment statement |LHS |with allocatable LHS --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-03-30 11:55:51 UTC --- (In reply to comment #0) > Disabling the possibility of "allocate-on-assignment" by changing [...] Or simply use: -fno-realloc-lhs With my - admittedly not clean - tree, that gives the following valgrind output: Invalid read of size 8 at 0x56B13A: get_std_lbound (trans-array.c:6825) by 0x573E88: gfc_alloc_allocatable_for_assignment (trans-array.c:7083) by 0x58EBDB: gfc_trans_assignment_1 (trans-expr.c:6186) That's the lines: 6822 else if (expr->expr_type == EXPR_VARIABLE) 6823 { 6824 tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl); 6825 return GFC_TYPE_ARRAY_LBOUND(tmp, dim); The issue is that TYPE_LANG_SPECIFIC (tmp) == tmp->type.lang_specific == NULL and, thus, accessing TYPE_LANG_SPECIFIC(node)->lbound[dim] gives an ICE. The issue is that for "mmv%h0" the proper backend is not: expr->symtree->n.sym->backend_decl but rather expr->ref->u.c->component->backend_decl