+2015-05-16 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/66113
+ * expr.c (is_parent_of_current_ns): New function.
+ (check_restricted): Use it.
+
2015-05-16 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR fortran/44054
(gfc_diagnostics_init): Initialize caret_chars array.
(gfc_diagnostics_finish): Reset caret_chars array to default.
-2015-05-16 Mikael Morin <mikael@gcc.gnu.org
+2015-05-16 Mikael Morin <mikael@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/65792
return check_references (ref->next, checker);
}
+/* Return true if ns is a parent of the current ns. */
+
+static bool
+is_parent_of_current_ns (gfc_namespace *ns)
+{
+ gfc_namespace *p;
+ for (p = gfc_current_ns->parent; p; p = p->parent)
+ if (ns == p)
+ return true;
+
+ return false;
+}
/* Verify that an expression is a restricted expression. Like its
cousin check_init_expr(), an error message is generated if we
|| sym->attr.dummy
|| sym->attr.implied_index
|| sym->attr.flavor == FL_PARAMETER
- || (sym->ns && sym->ns == gfc_current_ns->parent)
- || (sym->ns && gfc_current_ns->parent
- && sym->ns == gfc_current_ns->parent->parent)
+ || is_parent_of_current_ns (sym->ns)
|| (sym->ns->proc_name != NULL
&& sym->ns->proc_name->attr.flavor == FL_MODULE)
|| (gfc_is_formal_arg () && (sym->ns == gfc_current_ns)))