From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by sourceware.org (Postfix) with ESMTPS id 3FD123858D39; Mon, 3 Apr 2023 19:45:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3FD123858D39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1680551148; i=anlauf@gmx.de; bh=MfvzQdg4BEtvU6vysx9ImAKI4qqxY8Fth7NIVC9cjJM=; h=X-UI-Sender-Class:From:To:Subject:Date; b=Hha8UFWCJ2tmxP/rBYtT3coAqB3Xl7b418nWWzPmj9VEWW6AjUHtHMKNmZDFmWqK2 H7/IVcAR+MTqemsbTdVqrtY2tpMy31hvkbTvDBYIeuXowpp1KM08sTefCvDx1geSpq jQoslENcUIrbdjFOZ2ab+RfCZOog82uqEHqpg8Z9cf3qGviLZ73ORXRAVHpXns0B0i 8GtcsStj3ofRJ9y5MRwmpVduGdsEVj+iUokxN/vX3J0zVT0IKw+eVL7Y0FAssvlJ1K T5uu+UC2+fGuJ+I6tRzNsZX6vd9K48SvAQPyOx9eA/ovF32869zfyf22JSNt7PPpMP DwBx6AUsJoF0A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.89.165] ([93.207.89.165]) by web-mail.gmx.net (3c-app-gmx-bs28.server.lan [172.19.170.80]) (via HTTP); Mon, 3 Apr 2023 21:45:48 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: reject module variable as character length in PARAMETER [PR104349] Content-Type: multipart/mixed; boundary=rekceb-48aded8e-249a-4f89-a57f-f10d39e4d813 Date: Mon, 3 Apr 2023 21:45:48 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:O8GQMh6IeioKIwxa4l5UU7H2y4lNNFe5QHRz2CNIGxMkutHCXnNnz/HRH+k3iL202HBRM ipMgYNt9wnANcH5860GB+XNBkejz5zOlBZju0mA4agIHNmghGWofnw7di6yn5R2COLNK18zBdDgx 2l6lHDdyXn/l3mZ536fsIFhFHKaD5ojwSzeIM45jXZKAoS0wi5xkAlLX/Gh+0gsyR8BVtgwQOW6u cfEkXSjTA8OblZwTBG4y2NBCN5S/1wANFTT1b9Mtq5u8q1WVs3SPgJombsEW4g6/PJeS9ZoyChmn UY= UI-OutboundReport: notjunk:1;M01:P0:gpz1kfiNRzs=;xfIKU0RF8s20s2pM5ACUE1q8Vvh M4UuHqp1953StqBW5XZ5FQ11q1DEdQlOqqyjkJszy8q52ZfaJcL03AuEoPq0h2GPJ4d2eRRwi u/XLS5M0pvh3x6NJkVG0cAL7HiUb/H78NzPVXbA9IZPQPOP0dqhX6b3ruYFddHplVOJnUS+5A /F98Fk0SqZzTo/udDJdGMWrLhuNFjHYyimEPkPnpNUjPpRhMihhVRRIkc03Jj03SoVuV/TTSB YZLirM681/1I71aY+BAfWzkLE1rijpMwwmOT9Fni7u1Dijcxq9/9na1RCW1VCI2EkbZrM6wyO 6AErmUfQCvCp4GPzagjZqXBkIQT5KogOXsmVSQaG0/waMrCMpriQ6owEEkIjPe5q1yVD8OS/W IX87MGi1HiFxJWAOblS4wcuo0tsc99eAuMTMKGzlV4RSiorNC1XNIWa3w7+HHGkiG+8OJX8Qe DJE0vrMnhQRETCzSyybJQMvQGMSMkzo7FWYp0zQRXwNLGxBb/3Xuvea4FtnhB90us/UrCQf9F wJ6OknJ4G5OyY+Ztb40uU6ge5GJ1wqEIo45dDv7LiP4QbKwo1YMa13ILTXj25iC/3r5KUbERI apdLCHxxShEzTdUyes5/6XVCrzfOQy7De9Eklso79CPNLePpiBaad94ud4+SlS25dAWgZ7CMn hcSkUaw3SLUYArjY1Q71ZZsYrxj6FE4KviAnjI0JSJKtGsCNUxrO7DwShOk8HEl/cPEsgKnOP BUq31hxYalmnkeL+6CMwFwelHawj3/i2rRv4Ks6HXClfDC0AIeI/6Bfl0JXPQUqCXYYJuLLOR XW/KahA+wwuKdyKoLtxiSOQg== X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --rekceb-48aded8e-249a-4f89-a57f-f10d39e4d813 Content-Type: text/plain; charset=UTF-8 Dear all, the attached patch fixes an ICE-on-invalid for a PARAMETER expression where the character length was a MODULE variable. The ICE seemed strange, as we were catching related erroneous code for declarations in programs or subroutines. Removing a seemingly bogus check of restricted expressions is the simplest way to fix this. (We could also catch this differently in decl.cc). Besides, this also fixes an accepts-invalid, see testcase. :-) Regtested on x86_64-pc-linux-gnu. OK for mainline (13) or rather wait? Thanks, Harald --rekceb-48aded8e-249a-4f89-a57f-f10d39e4d813 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr104349.diff Content-Transfer-Encoding: quoted-printable =46rom 37136ce94b44149dd013b3d7fed7adba769241e6 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Mon, 3 Apr 2023 21:34:01 +0200 Subject: [PATCH] Fortran: reject module variable as character length in PARAMETER [PR104349] gcc/fortran/ChangeLog: PR fortran/104349 * expr.cc (check_restricted): Adjust check for valid variables in restricted expressions: make no exception for module variables. gcc/testsuite/ChangeLog: PR fortran/104349 * gfortran.dg/der_charlen_1.f90: Adjust dg-patterns. * gfortran.dg/pr104349.f90: New test. =2D-- gcc/fortran/expr.cc | 2 -- gcc/testsuite/gfortran.dg/der_charlen_1.f90 | 2 ++ gcc/testsuite/gfortran.dg/pr104349.f90 | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/pr104349.f90 diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index 7fb33f81788..02028f993fd 100644 =2D-- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -3504,8 +3504,6 @@ check_restricted (gfc_expr *e) || sym->attr.implied_index || sym->attr.flavor =3D=3D FL_PARAMETER || is_parent_of_current_ns (sym->ns) - || (sym->ns->proc_name !=3D NULL - && sym->ns->proc_name->attr.flavor =3D=3D FL_MODULE) || (gfc_is_formal_arg () && (sym->ns =3D=3D gfc_current_ns))) { t =3D true; diff --git a/gcc/testsuite/gfortran.dg/der_charlen_1.f90 b/gcc/testsuite/g= fortran.dg/der_charlen_1.f90 index 9f394c73f25..1246522d516 100644 =2D-- a/gcc/testsuite/gfortran.dg/der_charlen_1.f90 +++ b/gcc/testsuite/gfortran.dg/der_charlen_1.f90 @@ -22,3 +22,5 @@ CONTAINS type(T), intent(in) :: X end subroutine end module another_core + +! { dg-prune-output "cannot appear in the expression" } diff --git a/gcc/testsuite/gfortran.dg/pr104349.f90 b/gcc/testsuite/gfortr= an.dg/pr104349.f90 new file mode 100644 index 00000000000..2bea4a37214 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr104349.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR fortran/104349 - reject module variable as character length in PARAM= ETER +! Contributed by G.Steinmetz + +module m + character(n), parameter :: a(1) =3D 'b' ! { dg-error "cannot appear" } + character(n), parameter :: c =3D 'b' ! { dg-error "cannot appear" } +end =2D- 2.35.3 --rekceb-48aded8e-249a-4f89-a57f-f10d39e4d813--