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 2510D3858D3C; Tue, 20 Jun 2023 21:57:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2510D3858D3C 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=1687298223; x=1687903023; i=anlauf@gmx.de; bh=IUmdw3lo11C73N6ZqtzaIPjVHoAqsF5RpSo096vwtHk=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=fAuNS3WJvJWcoI6EdZ0aQaPKOiItVod7al6CMP32cKQ4yK2P7ENQaWiZEaoT2pVRX1nPBj5 zOA43pYNgMHckJ8jj/2ckDzidp3ed/mI5AQFvJ6TwIMcZ7jGxfhzvsuWVLYWYrDzapDO9gm/H hP4YMKnBgTzwgRmV8lssLEG6Fj45bH7TgAGuUsAYPKUAXxqOTSGV8D1s4LaOPA0ZMHGzey3hY PW2Uwsg7AOq2UbctFtXEgIG4XJlp19WJC/TpebGWyvphOmT11FKLKVfErgr1IpnsSSNKCLSAB 7JWvYRtjfpRN8DODszPeWBeyF0MlVTrBSQkuBOeEjlnWqu62PcUQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([79.251.8.64]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M1ps8-1qDwGd2SNM-002ESt; Tue, 20 Jun 2023 23:57:03 +0200 Message-ID: Date: Tue, 20 Jun 2023 23:57:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [Patch, fortran] PR107900 Select type with intrinsic type inside associate causes ICE / Segmenation fault To: Paul Richard Thomas , "fortran@gcc.gnu.org" , gcc-patches Cc: Steve Kargl Newsgroups: gmane.comp.gcc.patches,gmane.comp.gcc.fortran References: <358e8e69-8fc9-8d00-7fde-9aaa86371c87@gmx.de> Content-Language: en-US From: Harald Anlauf In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:IzXeRkMQxFAgf5JYyPKms09MO/77e/b3sevRSPx3WZ/cYFxxJCB dMr1rBsaLk6ogbWzPF2YUzfVSWAFtEQenGUqvdBygouULGFB4X1GThTEbBoDAMyZxUMkU/o YHrQcQtLfGNJENDBGOTuIbeQOJNrUrSTxyBLrMNmZ0lvacGBSz6og3tngDViUbPlomrpn1W LzgJLVBMGwQ8qfzJtdKcw== UI-OutboundReport: notjunk:1;M01:P0:iKVkAXiAS0s=;Lu6lzuUAYoYlE8p1aCHU5eU0GYi v0TJQAYm0ezXdpeby94qduhjnKmd3maQY73dtD9NbFSZngkb4ciK0DoQGW7CH3m6R0cjdtCiT IoeIp12pBLpWPKRY+vP5kkCTH5+2z8PHYlwg4VcbbzUUJ6MiSgr1s/cG8kxOvQCpKtijpic0J 8pD7N/yl0QWwtIwH7eCJf3gO3jJEnP6sfk8Kkim5Bc/vx9MKuy1HByDY+tMT/edW1i2moC6fh LpaAMoXUBy5dHGqdX/rrr6pZ3rWMSVXXJt0TU4tlwvaH5ctn2eajFDAc5FQ9Snw+uOhJfXHxJ sewg8vyqIEUdxL0vYoh3WukYudwpZ6+ReRCIXS1t23dhHbk4lw4lfUprh/2adwD4TgFnFbKZk q2X+MY3pKc5DKum0f+cRREBYx+PQVf2ep0PZYh2Zsrvw83Y1Tjl3IMzaSLRHTNzDA7l1dQeN+ ZVzcxV3wBCLtBX5TwPsDhABldAqp4XfIpdl7LxEs4O4l1FYtGehaNWk0rOYiNKvLl3g4qloWS WNL73YMSTU6xHI19Hnxc+mWTdYnuwKXX3MjdhtqdG6FpaZGYAc9sVaIaFWg5VEMS1+2O3bg6P oTwTfIYUQrgufN+ZihL14rZwg4PMhS7cVeoPhIsY5dLN70vtHQp/FL5WniPEZWbtkqYay3z27 DPA8LCrbbKy/tRq7ajVQOEkfulmi+hYqoaRitezzb8BfddTdEV/Lm/MvsA1TQ8tXlPOlZXyv9 qiBJcL6kCzxvFK02GTCNJOe2luXG9AGIsmxfbV04uh/QdyC0SGStdeBw0gfx8UDD0r2vfqRl2 cnjtCGjVi9weVpXPqaViAi726OFXKMLvALo0eKxrk09I7up5BP2rZr0Zsl74VEQta+gvWfw6f UZeqZIHNzcgvWgBm0xoHqvcFt7hZ6DLsa1WtTq4Gt4+USEi1TTXdzrEdf1xloqfMUfGXr6LIr BlOJbuwt6z2cyvrgBnTUGmsacmI= X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A,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: Message-ID: <20230620215701.I18vL0w5ucWxpxFyOlANR-FW6pOdtzZMk8CoUxftw4Y@z> Hi Paul, On 6/20/23 12:54, Paul Richard Thomas via Gcc-patches wrote: > Hi Harald, > > Fixing the original testcase in this PR turned out to be slightly more > involved than I expected. However, it resulted in an open door to fix > some other PRs and the attached much larger patch. > > This time, I did remember to include the testcases in the .diff :-) indeed! :-) I've only had a superficial look so far although it looks very good. (I have to trust your experience with unlimited polymorphism.) However, I was wondering about the following helper function: +bool +gfc_is_ptr_fcn (gfc_expr *e) +{ + return e !=3D NULL && e->expr_type =3D=3D EXPR_FUNCTION + && (gfc_expr_attr (e).pointer + || (e->ts.type =3D=3D BT_CLASS + && CLASS_DATA (e)->attr.class_pointer)); +} + + /* Copy a shape array. */ Is there a case where gfc_expr_attr (e).pointer returns false and you really need the || part? Looking at gfc_expr_attr and the present context, it might just not be necessary. > I believe that, between the Change.Logs and the comments, it is > reasonably self-explanatory. > > OK for trunk? OK from my side. Thanks for the patch! Harald > Regards > > Paul > > Fortran: Fix some bugs in associate [PR87477] > > 2023-06-20 Paul Thomas > > gcc/fortran > PR fortran/87477 > PR fortran/88688 > PR fortran/94380 > PR fortran/107900 > PR fortran/110224 > * decl.cc (char_len_param_value): Fix memory leak. > (resolve_block_construct): Remove unnecessary static decls. > * expr.cc (gfc_is_ptr_fcn): New function. > (gfc_check_vardef_context): Use it to permit pointer function > result selectors to be used for associate names in variable > definition context. > * gfortran.h: Prototype for gfc_is_ptr_fcn. > * match.cc (build_associate_name): New function. > (gfc_match_select_type): Use the new function to replace inline > version and to build a new associate name for the case where > the supplied associate name is already used for that purpose. > * resolve.cc (resolve_assoc_var): Call gfc_is_ptr_fcn to allow > associate names with pointer function targets to be used in > variable definition context. > * trans-decl.cc (gfc_get_symbol_decl): Unlimited polymorphic > variables need deferred initialisation of the vptr. > (gfc_trans_deferred_vars): Do the vptr initialisation. > * trans-stmt.cc (trans_associate_var): Ensure that a pointer > associate name points to the target of the selector and not > the selector itself. > > gcc/testsuite/ > PR fortran/87477 > PR fortran/107900 > * gfortran.dg/pr107900.f90 : New test > > PR fortran/110224 > * gfortran.dg/pr110224.f90 : New test > > PR fortran/88688 > * gfortran.dg/pr88688.f90 : New test > > PR fortran/94380 > * gfortran.dg/pr94380.f90 : New test > > PR fortran/95398 > * gfortran.dg/pr95398.f90 : Set -std=3Df2008, bump the line > numbers in the error tests by two and change the text in two.