From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id 58EA83858D33; Tue, 7 Nov 2023 18:16:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 58EA83858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 58EA83858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699381011; cv=none; b=PsJdSN70stX5xF2luoHr2fmg+F9fK6kww3uU4TE1soGOIEnQH3InxQvdYLqquysCnWf3PzV6ldXQndIuQ+QNQCfoLYJ7g5J2ZhY3xg8eJ3Kl7qwqy7387Ko26RLRaX9DxnGYnCz47Kybp1Ho0qvk2h8a0SfwkyvAXZGtq5KD+Ow= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699381011; c=relaxed/simple; bh=gAuOeW1c0cnljN3/EHXdDqjfWiH4Yx6ugr8golTfTKY=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=bgYlremcV0FNEJDWNPi2Q4r8iKxvkDGhh2Aw86rnm+CJkWwbCcrYvMJEtsSG/VxpWm8EoRukwF2FfJCi7DZ0bpLkqlDNkUTuFTUVrrfQejwp9UnuhJnzw81LfwiQ56p9cT/tYFXcxTHAqyvrQQBEVNc5m/wuh+UinnNFYhObxAM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1699381008; x=1699985808; i=anlauf@gmx.de; bh=gAuOeW1c0cnljN3/EHXdDqjfWiH4Yx6ugr8golTfTKY=; h=X-UI-Sender-Class:Date:Subject:To:References:From:In-Reply-To; b=RTyF0JsAP4dRbKVyf09p27Qu8QDTXfqUvp9bJ1Qbjp+dSDdPGVFstYjQaoSscnch pKvCadpuJdkXMh/Gck1PPal/W5+frAAXu+8bKRiRc4s+0BzLOXcLIAcRjGEya9ALB axzJftkNNSlDUfnMYmHzZHxSZMMhJ45626eSetPFDQMmsHWcuCT4hF2liPBFyfmBb Z4X0sQOnipzD+Cpk1veVH6QfEkslMQ/TeIlQ+tZ3XEqN3jgefHuWSpi58+HKoEY11 2s2qzD3yO+alTnsPsD7bgqxbLU7EUDsr/gSTWnEzYaVBtp0xXRYGQa5iJX55zhO0u vRvHJvBGhN5V7lXr7w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([93.207.87.14]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MHoNC-1rE7UP3ghy-00EtiI; Tue, 07 Nov 2023 19:16:47 +0100 Message-ID: Date: Tue, 7 Nov 2023 19:16:46 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 0/3] libgfortran: empty array fixes To: Mikael Morin , fortran@gcc.gnu.org, gcc-patches@gcc.gnu.org Newsgroups: gmane.comp.gcc.patches,gmane.comp.gcc.fortran References: <20231107102404.1723120-1-mikael@gcc.gnu.org> Content-Language: en-US From: Harald Anlauf In-Reply-To: <20231107102404.1723120-1-mikael@gcc.gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:up0c1CS8QLC1MCLBbE4I8A4mo/4fiFq3QSpQdY8e0QdelnEtMvd fGsbTKJ3X9U+drSiLYmYLESYIzj0E6hVfp4sOYKQsGeGFvcoZ10syekl4T3AyQa3KFZguLw RvXK3oqh8OaNJKUZu/WV9Bg5hzF8qOKbQego/PbCn3IOq4e+wENRVczCa9w+jyEoTQsvRf1 g19BCzYwfVeS2eXA2rAGw== UI-OutboundReport: notjunk:1;M01:P0:5a+Nib4VarM=;t3CFzWTsc+zf9dBpC8iolvz+jol dbd3mPO9bka1SIuTK7xdjNsWkU29baafgQIMGV+frlzk1Omh8P2KgcGMVdUxnSOXIU8ky5AEM FixuF4ALrut0dF7IQkJjkmRjw2GMkJe7AcOSGiG7M0dtBAsR4lEn3WcMWJ1X94hOIgs8anXlr zl1sKfrP5QbL8Mwuy2Zb8pqtuqDseYeuvX6UFtG1wW/W44k8DtU2joySusM2Ohs2xAnab7cI+ b0SrbD+G/XIztHO2fR1maHEYm0PzlAiV9TSrIg9HkBooR4pBoY0+xC0fZS2+dwTbqouCV4YYQ W1MH3Wk6qBKJjPo558KBjy78hYm/5TYEcg62T450i/KXjf/pphz0epaPeeGxrNO1rKal1puL3 rW5zJGKZDH5/p+nHQbpU7WoE0bKpflq/dIhFlUsh+/LlDS3lAWCge3heNDsjjNCPoFgOL9nPR fynsDf6pn8qpzIn2NilMwrKLoemDARt1ngBSIHskdRCftThh9Bxvd5MbGo5sdl1gdfDqD3Owp H7juFrtMEyk/537lgmiYtd4x1qChVD/l49EcpGmrkWgKtKFpnXUC+9ucP33SROdy3PerJcEhx L7DamUtYsD4yoe4JfXBhr/mrSf2rEfDHP0qc7p2ZmLhskVKsqywtKxN7kX3uBfZGKgujW7G8M baMI6eRCsxtcRWAmviIvk3k+BHSuk42dFhJ/TDMkSjNX0kQ1S0icZGeN7tbXq6w75otItueH/ G5oF7I0Wh18Xu4lqSVGzvjW1wLx3MFSoeP1AutWyf25pMm+9ryvP24zY6hX5B19Ddt26Ir102 HcnLOu8BxDgWxj+MDUHdlsAfrKNEMn+EnvpVUIpFZfdTZ8pb1vFZpZ9jAsvnciPUipZrtqMvz bHUMgnfI+w3vzYYkOpV40WftVRgaBgGvZcX99h8WuPM6JfQkkbIipQsZZvxR3ftsI/P3+fg4v e5XFqgvrSsiveOGcQ0iJGHvN7gM= X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: Hi Mikael, this is OK. Thanks for the patches! Harald On 11/7/23 11:24, Mikael Morin wrote: > Hello, > > Harald's review of the previous version [1] of these patches spotted a p= ossible > misbehaving case in one patch, and a latent bug in the area of the secon= d > patch. > So here is the second try, bootstraped and regression tested on x86_64-p= c-linux-gnu. > OK for master? > > Mikael > > [1]: > https://gcc.gnu.org/pipermail/fortran/2023-November/059896.html > https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635305.html > > Changes from version 1: > * Add patch 1/3 to the series fixing the unallocated empty result issu= e. > * In patch 2/3 (formerly 1/2) clamp negative extent to zero. > > > Mikael Morin (3): > libgfortran: Don't skip allocation if size is zero [PR112412] > libgfortran: Remove early return if extent is zero [PR112371] > libgfortran: Remove empty array descriptor first dimension overwrite > [PR112371] > > gcc/testsuite/gfortran.dg/allocated_4.f90 | 195 +++++++ > gcc/testsuite/gfortran.dg/bound_10.f90 | 207 ++++++++ > gcc/testsuite/gfortran.dg/bound_11.f90 | 588 ++++++++++++++++++++++ > libgfortran/generated/all_l1.c | 9 +- > libgfortran/generated/all_l16.c | 9 +- > libgfortran/generated/all_l2.c | 9 +- > libgfortran/generated/all_l4.c | 9 +- > libgfortran/generated/all_l8.c | 9 +- > libgfortran/generated/any_l1.c | 9 +- > libgfortran/generated/any_l16.c | 9 +- > libgfortran/generated/any_l2.c | 9 +- > libgfortran/generated/any_l4.c | 9 +- > libgfortran/generated/any_l8.c | 9 +- > libgfortran/generated/count_16_l.c | 9 +- > libgfortran/generated/count_1_l.c | 9 +- > libgfortran/generated/count_2_l.c | 9 +- > libgfortran/generated/count_4_l.c | 9 +- > libgfortran/generated/count_8_l.c | 9 +- > libgfortran/generated/findloc1_c10.c | 18 +- > libgfortran/generated/findloc1_c16.c | 18 +- > libgfortran/generated/findloc1_c17.c | 18 +- > libgfortran/generated/findloc1_c4.c | 18 +- > libgfortran/generated/findloc1_c8.c | 18 +- > libgfortran/generated/findloc1_i1.c | 18 +- > libgfortran/generated/findloc1_i16.c | 18 +- > libgfortran/generated/findloc1_i2.c | 18 +- > libgfortran/generated/findloc1_i4.c | 18 +- > libgfortran/generated/findloc1_i8.c | 18 +- > libgfortran/generated/findloc1_r10.c | 18 +- > libgfortran/generated/findloc1_r16.c | 18 +- > libgfortran/generated/findloc1_r17.c | 18 +- > libgfortran/generated/findloc1_r4.c | 18 +- > libgfortran/generated/findloc1_r8.c | 18 +- > libgfortran/generated/findloc1_s1.c | 18 +- > libgfortran/generated/findloc1_s4.c | 18 +- > libgfortran/generated/iall_i1.c | 30 +- > libgfortran/generated/iall_i16.c | 30 +- > libgfortran/generated/iall_i2.c | 30 +- > libgfortran/generated/iall_i4.c | 30 +- > libgfortran/generated/iall_i8.c | 30 +- > libgfortran/generated/iany_i1.c | 30 +- > libgfortran/generated/iany_i16.c | 30 +- > libgfortran/generated/iany_i2.c | 30 +- > libgfortran/generated/iany_i4.c | 30 +- > libgfortran/generated/iany_i8.c | 30 +- > libgfortran/generated/iparity_i1.c | 30 +- > libgfortran/generated/iparity_i16.c | 30 +- > libgfortran/generated/iparity_i2.c | 30 +- > libgfortran/generated/iparity_i4.c | 30 +- > libgfortran/generated/iparity_i8.c | 30 +- > libgfortran/generated/maxloc1_16_i1.c | 30 +- > libgfortran/generated/maxloc1_16_i16.c | 30 +- > libgfortran/generated/maxloc1_16_i2.c | 30 +- > libgfortran/generated/maxloc1_16_i4.c | 30 +- > libgfortran/generated/maxloc1_16_i8.c | 30 +- > libgfortran/generated/maxloc1_16_r10.c | 30 +- > libgfortran/generated/maxloc1_16_r16.c | 30 +- > libgfortran/generated/maxloc1_16_r17.c | 30 +- > libgfortran/generated/maxloc1_16_r4.c | 30 +- > libgfortran/generated/maxloc1_16_r8.c | 30 +- > libgfortran/generated/maxloc1_16_s1.c | 30 +- > libgfortran/generated/maxloc1_16_s4.c | 30 +- > libgfortran/generated/maxloc1_4_i1.c | 30 +- > libgfortran/generated/maxloc1_4_i16.c | 30 +- > libgfortran/generated/maxloc1_4_i2.c | 30 +- > libgfortran/generated/maxloc1_4_i4.c | 30 +- > libgfortran/generated/maxloc1_4_i8.c | 30 +- > libgfortran/generated/maxloc1_4_r10.c | 30 +- > libgfortran/generated/maxloc1_4_r16.c | 30 +- > libgfortran/generated/maxloc1_4_r17.c | 30 +- > libgfortran/generated/maxloc1_4_r4.c | 30 +- > libgfortran/generated/maxloc1_4_r8.c | 30 +- > libgfortran/generated/maxloc1_4_s1.c | 30 +- > libgfortran/generated/maxloc1_4_s4.c | 30 +- > libgfortran/generated/maxloc1_8_i1.c | 30 +- > libgfortran/generated/maxloc1_8_i16.c | 30 +- > libgfortran/generated/maxloc1_8_i2.c | 30 +- > libgfortran/generated/maxloc1_8_i4.c | 30 +- > libgfortran/generated/maxloc1_8_i8.c | 30 +- > libgfortran/generated/maxloc1_8_r10.c | 30 +- > libgfortran/generated/maxloc1_8_r16.c | 30 +- > libgfortran/generated/maxloc1_8_r17.c | 30 +- > libgfortran/generated/maxloc1_8_r4.c | 30 +- > libgfortran/generated/maxloc1_8_r8.c | 30 +- > libgfortran/generated/maxloc1_8_s1.c | 30 +- > libgfortran/generated/maxloc1_8_s4.c | 30 +- > libgfortran/generated/maxval1_s1.c | 30 +- > libgfortran/generated/maxval1_s4.c | 30 +- > libgfortran/generated/maxval_i1.c | 30 +- > libgfortran/generated/maxval_i16.c | 30 +- > libgfortran/generated/maxval_i2.c | 30 +- > libgfortran/generated/maxval_i4.c | 30 +- > libgfortran/generated/maxval_i8.c | 30 +- > libgfortran/generated/maxval_r10.c | 30 +- > libgfortran/generated/maxval_r16.c | 30 +- > libgfortran/generated/maxval_r17.c | 30 +- > libgfortran/generated/maxval_r4.c | 30 +- > libgfortran/generated/maxval_r8.c | 30 +- > libgfortran/generated/minloc1_16_i1.c | 30 +- > libgfortran/generated/minloc1_16_i16.c | 30 +- > libgfortran/generated/minloc1_16_i2.c | 30 +- > libgfortran/generated/minloc1_16_i4.c | 30 +- > libgfortran/generated/minloc1_16_i8.c | 30 +- > libgfortran/generated/minloc1_16_r10.c | 30 +- > libgfortran/generated/minloc1_16_r16.c | 30 +- > libgfortran/generated/minloc1_16_r17.c | 30 +- > libgfortran/generated/minloc1_16_r4.c | 30 +- > libgfortran/generated/minloc1_16_r8.c | 30 +- > libgfortran/generated/minloc1_16_s1.c | 30 +- > libgfortran/generated/minloc1_16_s4.c | 30 +- > libgfortran/generated/minloc1_4_i1.c | 30 +- > libgfortran/generated/minloc1_4_i16.c | 30 +- > libgfortran/generated/minloc1_4_i2.c | 30 +- > libgfortran/generated/minloc1_4_i4.c | 30 +- > libgfortran/generated/minloc1_4_i8.c | 30 +- > libgfortran/generated/minloc1_4_r10.c | 30 +- > libgfortran/generated/minloc1_4_r16.c | 30 +- > libgfortran/generated/minloc1_4_r17.c | 30 +- > libgfortran/generated/minloc1_4_r4.c | 30 +- > libgfortran/generated/minloc1_4_r8.c | 30 +- > libgfortran/generated/minloc1_4_s1.c | 30 +- > libgfortran/generated/minloc1_4_s4.c | 30 +- > libgfortran/generated/minloc1_8_i1.c | 30 +- > libgfortran/generated/minloc1_8_i16.c | 30 +- > libgfortran/generated/minloc1_8_i2.c | 30 +- > libgfortran/generated/minloc1_8_i4.c | 30 +- > libgfortran/generated/minloc1_8_i8.c | 30 +- > libgfortran/generated/minloc1_8_r10.c | 30 +- > libgfortran/generated/minloc1_8_r16.c | 30 +- > libgfortran/generated/minloc1_8_r17.c | 30 +- > libgfortran/generated/minloc1_8_r4.c | 30 +- > libgfortran/generated/minloc1_8_r8.c | 30 +- > libgfortran/generated/minloc1_8_s1.c | 30 +- > libgfortran/generated/minloc1_8_s4.c | 30 +- > libgfortran/generated/minval1_s1.c | 30 +- > libgfortran/generated/minval1_s4.c | 30 +- > libgfortran/generated/minval_i1.c | 30 +- > libgfortran/generated/minval_i16.c | 30 +- > libgfortran/generated/minval_i2.c | 30 +- > libgfortran/generated/minval_i4.c | 30 +- > libgfortran/generated/minval_i8.c | 30 +- > libgfortran/generated/minval_r10.c | 30 +- > libgfortran/generated/minval_r16.c | 30 +- > libgfortran/generated/minval_r17.c | 30 +- > libgfortran/generated/minval_r4.c | 30 +- > libgfortran/generated/minval_r8.c | 30 +- > libgfortran/generated/norm2_r10.c | 7 +- > libgfortran/generated/norm2_r16.c | 7 +- > libgfortran/generated/norm2_r17.c | 7 +- > libgfortran/generated/norm2_r4.c | 7 +- > libgfortran/generated/norm2_r8.c | 7 +- > libgfortran/generated/parity_l1.c | 7 +- > libgfortran/generated/parity_l16.c | 7 +- > libgfortran/generated/parity_l2.c | 7 +- > libgfortran/generated/parity_l4.c | 7 +- > libgfortran/generated/parity_l8.c | 7 +- > libgfortran/generated/product_c10.c | 30 +- > libgfortran/generated/product_c16.c | 30 +- > libgfortran/generated/product_c17.c | 30 +- > libgfortran/generated/product_c4.c | 30 +- > libgfortran/generated/product_c8.c | 30 +- > libgfortran/generated/product_i1.c | 30 +- > libgfortran/generated/product_i16.c | 30 +- > libgfortran/generated/product_i2.c | 30 +- > libgfortran/generated/product_i4.c | 30 +- > libgfortran/generated/product_i8.c | 30 +- > libgfortran/generated/product_r10.c | 30 +- > libgfortran/generated/product_r16.c | 30 +- > libgfortran/generated/product_r17.c | 30 +- > libgfortran/generated/product_r4.c | 30 +- > libgfortran/generated/product_r8.c | 30 +- > libgfortran/generated/sum_c10.c | 30 +- > libgfortran/generated/sum_c16.c | 30 +- > libgfortran/generated/sum_c17.c | 30 +- > libgfortran/generated/sum_c4.c | 30 +- > libgfortran/generated/sum_c8.c | 30 +- > libgfortran/generated/sum_i1.c | 30 +- > libgfortran/generated/sum_i16.c | 30 +- > libgfortran/generated/sum_i2.c | 30 +- > libgfortran/generated/sum_i4.c | 30 +- > libgfortran/generated/sum_i8.c | 30 +- > libgfortran/generated/sum_r10.c | 30 +- > libgfortran/generated/sum_r16.c | 30 +- > libgfortran/generated/sum_r17.c | 30 +- > libgfortran/generated/sum_r4.c | 30 +- > libgfortran/generated/sum_r8.c | 30 +- > libgfortran/m4/ifindloc1.m4 | 18 +- > libgfortran/m4/ifunction-s.m4 | 30 +- > libgfortran/m4/ifunction-s2.m4 | 30 +- > libgfortran/m4/ifunction.m4 | 30 +- > libgfortran/m4/ifunction_logical.m4 | 9 +- > 191 files changed, 2094 insertions(+), 3754 deletions(-) > create mode 100644 gcc/testsuite/gfortran.dg/allocated_4.f90 > create mode 100644 gcc/testsuite/gfortran.dg/bound_10.f90 > create mode 100644 gcc/testsuite/gfortran.dg/bound_11.f90 >