------- Comment #1 from janus at gcc dot gnu dot org 2010-07-13 09:45 ------- The following patch fixes the PR:
Index: gcc/fortran/dependency.c =================================================================== --- gcc/fortran/dependency.c (revision 162124) +++ gcc/fortran/dependency.c (working copy) @@ -427,22 +427,13 @@ gfc_ref_needs_temporary_p (gfc_ref *ref) int gfc_is_data_pointer (gfc_expr *e) { - gfc_ref *ref; - + symbol_attribute attr; + if (e->expr_type != EXPR_VARIABLE && e->expr_type != EXPR_FUNCTION) return 0; - /* No subreference if it is a function */ - gcc_assert (e->expr_type == EXPR_VARIABLE || !e->ref); - - if (e->symtree->n.sym->attr.pointer) - return 1; - - for (ref = e->ref; ref; ref = ref->next) - if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer) - return 1; - - return 0; + attr = gfc_expr_attr (e); + return attr.pointer; } However, it regresses at least on c_loc_tests_5.f03 and c_loc_tests_14.f90. -- janus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |janus at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2010-07-12 21:09:53 |2010-07-13 09:45:41 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44925