From patchwork Mon Nov 29 22:01:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 48267 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0ABD13857C73 for ; Mon, 29 Nov 2021 22:02:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0ABD13857C73 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1638223333; bh=AJW3jUCbJgEzQML4DqN4ojLTyS1JPa2SF1jSOvTGZKc=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=wZ7JhN0R4MmfNlO8axffjz1X9rP0slfDy6ZbxICRhiI4jw0lvAmO8qXR7RBymSf/8 pdvcLJiP9HIwhP1MXDDQtZKtj2lyhZ3IO8KwfE3zLgDivsLvZjUBn3H1LUEx0RABXG Bbmg09O2ekG3c53BbibccF3VJ0FwZ2oAnfIzhzM4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by sourceware.org (Postfix) with ESMTPS id 140B3385841C; Mon, 29 Nov 2021 22:01:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 140B3385841C X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.15.55] ([79.251.15.55]) by web-mail.gmx.net (3c-app-gmx-bs36.server.lan [172.19.170.88]) (via HTTP); Mon, 29 Nov 2021 23:01:24 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/103473 - [11/12 Regression] ICE in simplify_minmaxloc_nodim, at fortran/simplify.c:5287 Date: Mon, 29 Nov 2021 23:01:24 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:xlMY3eg5XRXCsZorSzpqMlLKTxivpWFaSeRW9aQvxRPlc89U51SDnSJlELxwgnVmandwN zcLjRVTY0HuCrZ8ArlsfMk4nX12qpD1ipik1gQJlOEgrcrTSyFfHPo7KuzBVDdhsjT1U3kqMICFn Dk52toNYW5BLA2/GFONHG/OeoGEnxH1RnTgrqis0vCmTle+6GxcM07+bjWyjkYcTsdfsAdQAtkNQ tmMpGtWBVN4gjywLscC72mIFBGct0El+/aADHTCYr6eCFCnd7dyNyFB0k8QNPiTxCsbBNhASSTCX PA= X-UI-Out-Filterresults: notjunk:1;V03:K0:LgyC8nh23Bc=:UOiihArkn6LaandfPHxIdo iBnYe6/O4vvACDwMhBTMGAE3n3ylEVdpFMW0Dp9fm6eGyV80Z0FicwgSG92v6ithkHsNgBFaM zesyDU8DgwMHRGH3gPpwcDIaxr9O1U+Yxr3yFUFhuMoXf1W40Xd/UqcTP4yIARBsO2zHp3w6J oXA/vjyWKeH/6mv+ttafo/hhKJwfJnfr65UdPfFOWx4byLBJuvY4MZJqgVKJWhGlGIioj+PMz G3zQGWzjsJFzhXEzWI+LL6ehjCIUFxZ29OUhPCdFKEVTjWcdBTwb/DlTs2hx4Le4CX8yiH2P3 DZ8DVFviYTrbo41EGP6gVUKCqoHY+cqDG1k/9y8vJc4OrVZZlAL2TA7Ti7ssWYYyThdWjD5XZ EJL8dMwi3QHY1g3RJlGkXWa+dXpWAApNHzwInukOpHh6gNg1WTrqam5+6dhPapMian1Wp7ERI mPCGa4CdbrQT/TLy805Uh8+mYGPtsc8u5/ZWfxoV3lwAI7g0UTvxQyBIbtrT34yuurKfU+42j FdgboEL/GOavh4uD5eB2fy7ME7NL/WXyazeRQtPru3OL/yQMvWyT4AgCfF3TSuveTPicSn1Tf cdukIRxZlVF/eYq4plcG9yShkz0L5ubWsSv86LwxPqgCIwPTyrSSvajMQZ7FLAXNKtMQXKRh3 ibB3V3l7wNFAf4/3kAeASy4VKd9R40VJlqOj72VdQZ7u8XgnJg6zPB1YlzXWdHI88NOezb1G/ vacoDTQzoh9kwsGIqg2jBcIA32DQ4m9uEmgQkAAHie8oYcgOKBL49SitGqI= X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Harald Anlauf via Gcc-patches From: Harald Anlauf Reply-To: Harald Anlauf Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Dear all, another trivial and obvious one, discovered by Gerhard. We can have a NULL pointer dereference simplifying MINLOC/MAXLOC on an array that was not properly declared. OK for mainline / affected 11-branch after regtesting completes? Thanks, Harald From 6bdecd3805eb0d55722992ccb517d08b9bafe605 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Mon, 29 Nov 2021 22:56:30 +0100 Subject: [PATCH] Fortran: error recovery when simplifying MINLOC/MAXLOC gcc/fortran/ChangeLog: PR fortran/103473 * simplify.c (simplify_minmaxloc_nodim): Avoid NULL pointer dereference when shape is not set. gcc/testsuite/ChangeLog: PR fortran/103473 * gfortran.dg/minmaxloc_15.f90: New test. --- gcc/fortran/simplify.c | 3 +++ gcc/testsuite/gfortran.dg/minmaxloc_15.f90 | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/minmaxloc_15.f90 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index c9e13b59da9..fb7b7814603 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -5280,6 +5280,9 @@ simplify_minmaxloc_nodim (gfc_expr *result, gfc_expr *extremum, && !mask->value.logical) goto finish; + if (array->shape == NULL) + goto finish; + for (i = 0; i < array->rank; i++) { count[i] = 0; diff --git a/gcc/testsuite/gfortran.dg/minmaxloc_15.f90 b/gcc/testsuite/gfortran.dg/minmaxloc_15.f90 new file mode 100644 index 00000000000..e4eba3501d5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/minmaxloc_15.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! PR fortran/103473 - ICE in simplify_minmaxloc_nodim +! Test case by Gerhard Steinmetz. + +subroutine s + implicit none + integer, parameter :: a(+'1') = [1] ! { dg-error "unary numeric operator" } + print *, minloc (a) +end + +! { dg-prune-output "Parameter array" } -- 2.26.2