From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 7C91A3938C30; Wed, 19 May 2021 12:32:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7C91A3938C30 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Tobias_Burnus@mentor.com IronPort-SDR: gawxxCW/MzdCXbposz7o2JSuLnw+H3PmY/nXf05MVnrQkY/94boZ0csmASeBZfaN5ZFLFuZEHj 7dXmyzDilO5xeYKWcKSJr9h8fGqbaLb7iskl6L0VlmyY19jN0nLzKhTunYm+pqJ2wlXSGhgM9m dGaMR76sG3Ek0VMp67ShahLnSJ+nGA2McBWZESA5ts+zL1mvVPe5yMWGBUgAHZV9ruXy5S8g4/ tgKboadz4mRHt/HPaRK0xvzwh6IqQ7S2mDYUENS53YDx3SAfSzyFSHRTtXEbxlhSfGk6GCYlNp o1M= X-IronPort-AV: E=Sophos;i="5.82,312,1613462400"; d="diff'?scan'208";a="61531465" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 19 May 2021 04:32:08 -0800 IronPort-SDR: xpa++QHNwfi6J7pA7Nl0hWpAg3tAQFxTe1/tu6SjGlEifkivFeb2lqc+XpqW/vCadDu/9N4KDY a1SXj8hLw48/ZK+4Igv7isSudMQ7sssUai6gCs+4//FTHfVV0J3L3PrJNGFS7UZSLRUs08pWm6 gf5BbCTAAVZNWUhl43X5Q3ON3JhMS7uWlFCAR7AsM4TvpU0ntKgB97V39vfzIUifYN+4H7cJJf OO6y78UzMDtH3Xs17URPkNPK5cpu7ILGcVrjtFgPLluph/PNF0QjWiR956A3nmQKyH8oTBMeC6 6Os= To: gcc-patches , fortran , David Edelsohn , Segher Boessenkool , Harald Anlauf From: Tobias Burnus Subject: [Patch] Testsuite/Fortran: gfortran.dg/pr96711.f90 - fix expected value for PowerPC [PR96983] Message-ID: Date: Wed, 19 May 2021 14:32:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B300030F0ED1D4E1AF84F282" Content-Language: en-US X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-02.mgc.mentorg.com (139.181.222.2) To svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 May 2021 12:32:11 -0000 --------------B300030F0ED1D4E1AF84F282 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable Regarding gfortran.dg/pr96711.f90: On my x86-64-gnu-linux, it PASSes. On our powerpc64le-linux-gnu it FAILS with 'STOP 3' (=E2=86=92 also scan-dump count) and 'STOP 4'. Contrary to PR96983's bug summary, I don't get an ICE. On powerpc64le-linux-gnu, the following condition evaluates true (=E2=86=92= 'STOP 3'): real(16) :: y ! 128bit REAL integer(16), parameter :: k2 =3D nint (2 / epsilon (y), kind(k2)) integer(16), parameter :: m2 =3D 10384593717069655257060992658440192_16= !2**113 if (k2 /=3D m2) stop 3 On x86_64-linux-gnu, k2 =3D=3D m2 =E2=80=94 but on powerpc64le-linux-gnu, k2 =3D=3D 2**106 instead of 2**113. My solution is to permit also 2**106 besides 2**113. @PowerPC maintainers: Does this make sense? =E2=80=93 It seems to work on o= ur PowerPC but with all the new 'long double' changes, does it also work for you? @All, Harald: Does the attached patch make sense? Tobias PS: I find the PR a bit confusing =E2=80=93 there are some GCC 11 commits and a GCC 12 commit but no real explanation what now works and what still fails. ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstrasse 201, 80634 M=C3=BCnchen R= egistergericht M=C3=BCnchen HRB 106955, Gesch=C3=A4ftsf=C3=BChrer: Thomas H= eurung, Frank Th=C3=BCrauf --------------B300030F0ED1D4E1AF84F282 Content-Type: text/x-patch; charset="UTF-8"; name="fix-pr96711.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="fix-pr96711.diff" Testsuite/Fortran: gfortran.dg/pr96711.f90 - fix expected value for PowerPC [PR96983] gcc/testsuite/ChangeLog: PR fortran/96983 * gfortran.dg/pr96711.f90: diff --git a/gcc/testsuite/gfortran.dg/pr96711.f90 b/gcc/testsuite/gfortran.dg/pr96711.f90 index 3761a8ea416..0597ff2e37e 100644 --- a/gcc/testsuite/gfortran.dg/pr96711.f90 +++ b/gcc/testsuite/gfortran.dg/pr96711.f90 @@ -1,28 +1,29 @@ ! { dg-do run } ! { dg-require-effective-target fortran_integer_16 } ! { dg-require-effective-target fortran_real_16 } ! { dg-additional-options "-fdump-tree-original" } ! { dg-final { scan-tree-dump-times "_gfortran_stop_numeric" 2 "original" } } ! ! PR fortran/96711 - ICE on NINT() Function program p implicit none real(8) :: x real(16) :: y integer(16), parameter :: k1 = nint (2 / epsilon (x), kind(k1)) integer(16), parameter :: k2 = nint (2 / epsilon (y), kind(k2)) integer(16), parameter :: m1 = 9007199254740992_16 !2**53 - integer(16), parameter :: m2 = 10384593717069655257060992658440192_16 !2**113 + integer(16), parameter :: m2 = 10384593717069655257060992658440192_16 !2**113 ! Some systems like x86-64 + integer(16), parameter :: m2a = 81129638414606681695789005144064_16 !2**106 ! Some systems like PowerPC integer(16), volatile :: m x = 2 / epsilon (x) y = 2 / epsilon (y) m = nint (x, kind(m)) ! print *, m if (k1 /= m1) stop 1 if (m /= m1) stop 2 m = nint (y, kind(m)) ! print *, m - if (k2 /= m2) stop 3 - if (m /= m2) stop 4 + if (k2 /= m2 .and. k2 /= m2a) stop 3 + if (m /= m2 .and. m /= m2a) stop 4 end program --------------B300030F0ED1D4E1AF84F282--