------- Comment #2 from pault at gcc dot gnu dot org 2006-09-18 07:49 ------- This fixes it:
Index: gcc/fortran/resolve.c =================================================================== *** gcc/fortran/resolve.c (revision 117013) --- gcc/fortran/resolve.c (working copy) *************** resolve_structure_cons (gfc_expr * expr) *** 608,613 **** --- 608,625 ---- continue; } + if (comp->pointer + && !((cons->expr->expr_type == EXPR_VARIABLE + || cons->expr->expr_type == EXPR_VARIABLE) + && (cons->expr->symtree->n.sym->attr.pointer + || cons->expr->symtree->n.sym->attr.target))) + { + t = FAILURE; + gfc_error ("The element in the derived type constructor at %L, " + "for pointer component '%s' should be a POINTER or " + "a TARGET", &cons->expr->where, comp->name); + } + /* If we don't have the right type, try to convert it. */ if (!gfc_compare_types (&cons->expr->ts, &comp->ts)) I have yet to regtest or to write a suitable testcase. Paul -- pault at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |pault at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2006-09-17 15:32:08 |2006-09-18 07:49:34 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29115