diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 417b20637e3e208c15efc721793e20656aa0b350..72582681bb7b8032386001e0ed3e36da366bc067 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -17917,7 +17917,10 @@ resolve_types (gfc_namespace *ns) for (n = ns->contained; n; n = n->sibling) { - if (gfc_pure (ns->proc_name) && !gfc_pure (n->proc_name)) + /* Exclude final wrappers with the test for the artificial attribute. */ + if (gfc_pure (ns->proc_name) + && !gfc_pure (n->proc_name) + && !n->proc_name->attr.artificial) gfc_error ("Contained procedure %qs at %L of a PURE procedure must " "also be PURE", n->proc_name->name, &n->proc_name->declared_at);