http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54556
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-09-12
Ever Confirmed|0 |1
--- Comment #10 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-09-12
22:18:15 UTC ---
In expr.c's gfc_check_vardef_context one calls:
if (!pointer && context && gfc_implicit_pure (NULL)
&& gfc_impure_variable (sym))
The problem is that the latter has (cf. resolve.c):
if (sym->attr.dummy && gfc_pure (proc)
&& ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
||
proc->attr.function))
The issue is "gfc_pure".
Draft patch (replaces the one in comment 9):
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -13567,6 +13572,5 @@ gfc_impure_variable (gfc_symbol *sym)
proc = sym->ns->proc_name;
- if (sym->attr.dummy && gfc_pure (proc)
- && ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
- ||
- proc->attr.function))
+ if (sym->attr.dummy
+ && ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
+ || proc->attr.function))
return 1;