From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 39AD73860C39; Sat, 24 Oct 2020 21:00:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 39AD73860C39 From: "anlauf at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/97491] Wrong restriction for VALUE arguments of pure procedures Date: Sat, 24 Oct 2020 21:00:02 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: rejects-valid X-Bugzilla-Severity: normal X-Bugzilla-Who: anlauf at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Oct 2020 21:00:02 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D97491 --- Comment #2 from anlauf at gcc dot gnu.org --- The patch diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index a210f9aad43..096108f4317 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -16476,6 +16507,7 @@ gfc_impure_variable (gfc_symbol *sym) proc =3D sym->ns->proc_name; if (sym->attr.dummy + && !sym->attr.value && ((proc->attr.subroutine && sym->attr.intent =3D=3D INTENT_IN) || proc->attr.function)) return 1; regtests fine. Not sure if this is the best solution, since older Fortran standards seemed to require INTENT(IN) for dummy x, while F2018 forbids INTENT(INOUT) and INTENT(OUT), as well as ALLOCATABLE, POINTER and VOLATILE here.=