From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by sourceware.org (Postfix) with ESMTPS id 40EED38500BE; Sat, 10 Dec 2022 21:14:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 40EED38500BE 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=1670706846; bh=U3CQk9m1DVWc4bTYSIWT1ev4cVVmP04itQv0Te0TUgo=; h=X-UI-Sender-Class:From:To:Subject:Date; b=onrWgC4T+bMVscnkdFEeu7AN9dfjtjBbnOsXdaym5vgs98+KAwNHdVBsC7RBe1ubZ a3cH0YO4ZHhkri9Nux4vlxaFcas1/6hsBQcdgxfYOrfpCTDP0qY99ocCrNzB8XxIfK DlmvnIrWf91lcd4B+ZiJjgBLfb+y+Fb2Q+fixPK/zWwikWJmZd1Lt6XiQDrRLP30J+ 47ImGertWLWpB+yGGT1dYW/n5MYtsab+2zC+zhQdZ9iBN7TdQQjre1/f7Kpt+d7AyF 1PnIz2RjMHY0p844Ef9scioQT6EFuTuXqh7J8wo9nVzAaLkNc/jqkazyj2j8WndlCB 8Ut8bvWVlz61w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.84.200] ([93.207.84.200]) by web-mail.gmx.net (3c-app-gmx-bap38.server.lan [172.19.172.108]) (via HTTP); Sat, 10 Dec 2022 22:14:06 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: reject bad SIZE argument while simplifying ISHFTC [PR106911] Content-Type: multipart/mixed; boundary=nika-8bff5a88-8d86-43e8-b6ee-1685287907d7 Date: Sat, 10 Dec 2022 22:14:06 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:ChWGdEReVim3doPtbrYhF3J6lyZ9DNEm4vdKiBTsLEcPmJDoO+agem3Tsxk4SHnJN+tVJ jfGiOYN57dbPnmQXCS1WY6e7KDg9gPGDDcCQQbX6As63Fj/oLHawZNMKlLPaxhZ/O1EexEGmjmzn QUCCKeRvCX3geiHjQPHjFENdTRN0LUtUTwp2MsXh7QY6JZfvu4LqXgIoc/BtyDhMOZfgq6IuwRw5 KW+1heXupoc0oDFXob+qkcPO4r4Z9HbeKC6SP8K9Q6FC2yQYhf2ZWghSfx26FHWouh75Qm8Qxv1Q mY= UI-OutboundReport: notjunk:1;M01:P0:yxZ3LynSmDw=;Gcn2TZOi5F6LadiJq2sK4vpEaR6 OwbhNsAKiMUWStFO9y31CXZ8fu/OjtBoanFs7edJNI77OzJQk6DIu6iDVSMxVL8n3vSEi685s LoUOBJXgaEdjujmQVOJGU/2GEu5nBkqA8lHjZoTWFvUwWoYD6k5NjzpyVOH8FRoGh8NSgAec8 /G/9Jn7PiOIPMFPew0NZG3BrDPTihwyL3yTktgFgXhrkJ0gTPOgmhFdrc446+NQHM0SGjvCU3 ukf4KzZu/+7Bl/y44q/wscyKigWRu57q4+Ae8G+t8yxLz2Iqijj5SKy3ZMMVbsVp+XvAbbttV 0GJY+2+K+yqHGEsEdC5on2g3nGdEbpwSYnB/EUocCR7/X3Moc5wFB/JhK3/8swPTSCpctaq6U c3TBaFu3kde4BmLFPTPvc7Ip/yLvnwWs/n25RlW/cXtb6VL7fWudkn+EoA7TFVd+zWOBaFU/u hYBLQM6k5WNbsJotSi6XY0YRGQAGESzYrU7daQd1Ghk73Voj8njJQNrYkjRq5+Cegrp6EjwEs 2y6R3HmgxVyXOws3NLgoZYxZxfAlYpawwWHKWWb1nL0vpmDqyQnF2KmcO+absowiz0S1C3s3m cWu95nSu+/70oIAKiFTyfJK30IPspvFv0yPy2y6hM2xNJl6dIG2cOb5jvLdTzvp6H3nxxRMvn QSgC+UAz/APf2D2lXY+SQMXvuEAL2DnkIyWnK5GLWGVYaBxqk2lalCxjiO4YhJdUfgHJ3Hj0G Z/NjfGd0dP3ZaW8hW4HAa+DfdJoIrff+qz7zw9r/Xm/TeBY4i007KNrBAbTSSxDmm6M0EB6qk vMsfgL1dyELISE+q5PywobYg== X-Spam-Status: No, score=-13.4 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: --nika-8bff5a88-8d86-43e8-b6ee-1685287907d7 Content-Type: text/plain; charset=UTF-8 Dear all, we should not try to simplify ISHFTC if the SIZE argument is known to be outside the allowed range. It's better to generate an error by terminating the simplification. Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald --nika-8bff5a88-8d86-43e8-b6ee-1685287907d7 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr106911.diff Content-Transfer-Encoding: quoted-printable =46rom ae4438537fbc2ed04f3b0fb32d4e02b0ed6977a1 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Sat, 10 Dec 2022 22:05:15 +0100 Subject: [PATCH] Fortran: reject bad SIZE argument while simplifying ISHFT= C [PR106911] gcc/fortran/ChangeLog: PR fortran/106911 * simplify.cc (gfc_simplify_ishftc): If the SIZE argument is known to be outside the allowed range, terminate simplification. gcc/testsuite/ChangeLog: PR fortran/106911 * gfortran.dg/pr106911.f90: New test. =2D-- gcc/fortran/simplify.cc | 3 +++ gcc/testsuite/gfortran.dg/pr106911.f90 | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr106911.f90 diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index aff9a1b8ced..3d3aaba84df 100644 =2D-- a/gcc/fortran/simplify.cc +++ b/gcc/fortran/simplify.cc @@ -3955,6 +3955,9 @@ gfc_simplify_ishftc (gfc_expr *e, gfc_expr *s, gfc_e= xpr *sz) return NULL; gfc_extract_int (sz, &ssize); + + if (ssize > isize || ssize <=3D 0) + return &gfc_bad_expr; } else ssize =3D isize; diff --git a/gcc/testsuite/gfortran.dg/pr106911.f90 b/gcc/testsuite/gfortr= an.dg/pr106911.f90 new file mode 100644 index 00000000000..f3fe7f6ad68 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr106911.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! PR fortran/106911 - ICE in gfc_convert_mpz_to_signed +! Contributed by G.Steinmetz + +program p + implicit none + integer, parameter :: a =3D 10 + integer, parameter :: b =3D 20 + integer, parameter :: c =3D ishftc(1_1, a, b) ! { dg-error "must be les= s than or equal" } + integer, parameter :: d =3D ishftc(1_1, a, 0) ! { dg-error "must be pos= itive" } + interface + subroutine s + import :: a, b + integer, parameter :: e =3D ishftc(1_1, a, b) ! { dg-error "must b= e less than or equal" } + integer, parameter :: f =3D ishftc(1_1, a, 0) ! { dg-error "must b= e positive" } + end + end interface +end =2D- 2.35.3 --nika-8bff5a88-8d86-43e8-b6ee-1685287907d7--