------- 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