From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id CC9DE3858400; Fri, 26 Nov 2021 21:58:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CC9DE3858400 From: "sgk at troutmask dot apl.washington.edu" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/103418] random_number() does not accept pointer, intent(in) array argument Date: Fri, 26 Nov 2021 21:58:04 +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: 10.1.0 X-Bugzilla-Keywords: rejects-valid X-Bugzilla-Severity: normal X-Bugzilla-Who: sgk at troutmask dot apl.washington.edu 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: Fri, 26 Nov 2021 21:58:04 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103418 --- Comment #11 from Steve Kargl = --- On Fri, Nov 26, 2021 at 08:13:05PM +0000, anlauf at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103418 >=20 > --- Comment #10 from anlauf at gcc dot gnu.org --- > (In reply to Steve Kargl from comment #9) > > "does not work for me" isn't too descriptive. >=20 > Well, you fixed a related issue, but not the problem in comment#0. >=20 > Try your patch on: >=20 > module m > contains > subroutine s1 (a, b) > real, pointer, intent(in) :: a, b(:) > call random_number (a) > call random_number (b) > end subroutine s1 > end module >=20 That's at least sufficient to fix your issue. diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 5a5aca10ebe..49bb9d350f0 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -1031,7 +1031,9 @@ variable_check (gfc_expr *e, int n, bool allow_proc) break; } - if (!ref) + if (!ref + && !(pointer + && ((e->ref && e->ref->type =3D=3D REF_ARRAY) || e->rank = =3D=3D 0))) { gfc_error ("%qs argument of %qs intrinsic at %L cannot be " "INTENT(IN)", gfc_current_intrinsic_arg[n]->name, @@ -1062,7 +1064,8 @@ variable_check (gfc_expr *e, int n, bool allow_proc) return true; gfc_error ("%qs argument of %qs intrinsic at %L must be a variable", - gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, &e->where); + gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, + &e->where); return false; }=