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 302A3385802E; Mon, 23 Nov 2020 21:18:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 302A3385802E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=anlauf@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1606166336; bh=5K9KMnR0oGG0+5YUdtT/Ms4wtqTkI+fHdp2ItVwKQp0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=dPbeazV7Hvy7JeG6H5NOshv9QGKraZQkCKXaZeAatcwx52mHsRbI5Qxy0GSDhHUl5 PTC3xtkOVP6LIFq65/suIysRzVUhT21eqzNThJM8PsTXjoHlxRVFCQ6f2zloja0pSO U+qfQG3QC4KIpuvqyy9g3AMNHig4DB/ej3SlkAq8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.83.25] ([93.207.83.25]) by web-mail.gmx.net (3c-app-gmx-bs03.server.lan [172.19.170.52]) (via HTTP); Mon, 23 Nov 2020 22:18:56 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Cc: Jerry DeLisle Subject: [PATCH] PR fortran/85796 - Floating point exception with implied do Content-Type: multipart/mixed; boundary=trekuen-13e0f11f-b72a-479c-971c-1693d7757ab4 Date: Mon, 23 Nov 2020 22:18:56 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:LfZ+7qsgZtmvq1gEWWfAs89LfcdWQ8/3zXFRPKm1BHWF8u3h1aTnG1xPKruRKYSOO4Gng l48+fzgqB0viX6k2+b1s4SJPKxmu1iAZxHtZkSpBAUSL+5VDsrruZsiOtMHsCYNo0oB71uHjLac9 WAwGfbyGEgfvTE8ObKAolY4UmK1Pape9lWt1Hbkpphi6lXF8Yys4XAtCv0e0G8eYB6YixWtDdV0Z /Pw2JBDD6lm9wBaTRkRsovIsi2g6MZJ65WKpXda6ZwK13iLzNNQ8ZJkziQGW7O6OycVTGqB7fNY5 XI= X-UI-Out-Filterresults: notjunk:1;V03:K0:WkK+LqTAZTc=:j/7lpHVPEDYZzf2ZKPk0yR VMmUlO4u5z1238qhPv20OdRGjJ7yfAsnfzqn4iAq2oI+BnczcSZFPgQHEDXuIeTa3dHeF+q70 5AhgMvLxvmUiQaOQgugGQzxhcYy/G03f5DsHVzE8rwqj2QRVECV6qRFTNpk7H1/WkWcXAjlgG EymfD/b4lJjoViXTjmZLKAa377nwptndh8QZPIzRhx3JY50WtreStdkDop4yfqx7+Ic25GzBe R6pzhRZIFpZBQGHJ1WsEncnNgYG8KxlC40OKqg1OfPmlHDXBFfx1Fyni+/G+/XoWpxeBqwJ/l TwUpvv3DfZfh2RoAOAzTQG4/VCY2Tc69NbUl0nLCeZwjxhdVnFre6USTkO4lAEt/8JYrbtMSH i+Gh5sU7vllZlqGTYN744UZ5Dw3d8WhfiJEuTkCxR68YDTA1EoOlclaFc2dIw3meUvzt5p9Px y0Nc1fTZ+VF1Ik+goNtkIGq6UmbissJCPDIKTUlsPWB5629JuWNF/M+MnnOWUF5Rvaq3v0FWJ oAJtHh0/a1jwZgW0aAYpfOXCouzKWGOaQeqbOm7tfffEYQa29+QwKQR6rdMTfa8Z4GMxfladF 72hMY7g3y0oSs= X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, 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.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: Mon, 23 Nov 2020 21:19:00 -0000 --trekuen-13e0f11f-b72a-479c-971c-1693d7757ab4 Content-Type: text/plain; charset=UTF-8 The patch below is based on a previous version by Steve. The present version fixes an additional copy&paste error. Needless to say that it (still!) regtests cleanly on x86_64-pc-linux-gnu. OK for master? As it appears safe, OK for backport to at least 10-branch? Thanks, Harald PR fortran/85796 - Floating point exception with implied do Catch invalid step=0 in implied do loop within data statements. gcc/fortran/ChangeLog: PR fortran/85796 * resolve.c (traverse_data_list): Fix copy&paste errors; catch step=0 in implied do loop. gcc/testsuite/ChangeLog: PR fortran/85796 * gfortran.dg/pr85796.f90: New test. --trekuen-13e0f11f-b72a-479c-971c-1693d7757ab4 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr85796.patch diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 1641eb6ca10..b6d21ad1bac 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -16327,7 +16327,7 @@ traverse_data_list (gfc_data_variable *var, locus *where) || end->expr_type != EXPR_CONSTANT) { gfc_error ("end of implied-do loop at %L could not be " - "simplified to a constant value", &start->where); + "simplified to a constant value", &end->where); retval = false; goto cleanup; } @@ -16335,7 +16335,14 @@ traverse_data_list (gfc_data_variable *var, locus *where) || step->expr_type != EXPR_CONSTANT) { gfc_error ("step of implied-do loop at %L could not be " - "simplified to a constant value", &start->where); + "simplified to a constant value", &step->where); + retval = false; + goto cleanup; + } + if (mpz_cmp_si (step->value.integer, 0) == 0) + { + gfc_error ("step of implied-do loop at %L shall not be zero", + &step->where); retval = false; goto cleanup; } diff --git a/gcc/testsuite/gfortran.dg/pr85796.f90 b/gcc/testsuite/gfortran.dg/pr85796.f90 new file mode 100644 index 00000000000..78683787fbb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr85796.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR fortran/85796 - Floating point exception with implied do in data statement + +program p + implicit none + integer :: i, j, x(2,2) + data ((x(i,j),i=1,2,j-1),j=1,2) /3*789/ ! { dg-error "step of implied-do loop" } +end --trekuen-13e0f11f-b72a-479c-971c-1693d7757ab4--