From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32020 invoked by alias); 6 Feb 2015 14:04:27 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 31950 invoked by uid 48); 6 Feb 2015 14:04:22 -0000 From: "tkoenig at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/64958] Warn if INTENT(IN) is changed by passing to no-intent argument Date: Fri, 06 Feb 2015 14:04:00 -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: 5.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: tkoenig at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED 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: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-02/txt/msg00575.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64958 --- Comment #3 from Thomas Koenig --- If it is forbidden to modify an actual argument, we could make a tempoary copy of that argument, pass that to a procedure where it maches an intent(unknown) dummy argument, then do the comparison. So, we would replace subroutine bar(n) integer, intent(in) :: n call dusty(n) end subroutine bar with subroutine bar(n) integer, intent(in) :: n integer :: shadow_n shadow_n = n call dusty(shadow_n) if (n /= shadow_n) call _gfortran_runtime_error("bletchful") end subroutine bar where dusty has no explicit interface or the first dummy argument of dusty has unknown intent. It would probably make most sense for scalar intrinsic types inculding character variables. Arrays of intrinsic types might also be a possibility, but with decreasing return on investment, so to speak.