From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by sourceware.org (Postfix) with ESMTPS id AE4CA3858C33; Sat, 4 Mar 2023 16:03:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE4CA3858C33 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=1677945769; i=anlauf@gmx.de; bh=wE/ggT3m2roQJ4uVz0EtLuotpPQ06wAFI1Y4VEojsDo=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=eLjjdttvxl6nRu9mvKAKOcV/10JhwCt8bfudIb6DCZ7L07egRrNkJlg3+IVvGYuAe Bg9G5B9bkBXZw9zk2LJIrq4ahV1ghQDIueCSWV4c7aFI1Gh9aSqkB7+3RclzkmjINU u2hDk46ZLlmn7FqUhwGyf6CStc9G5OyQDw04svi5AMyaXIdZnae/B0w4gFIJlcWTVa RppiGnHq+uRJSuXe4nn0BfRN2Bf47Y83A5ZDWVem07KM36NdKcW/bzkVma4fftBFda mKgQJ73P0adRRYBoRBzGSeJqbJ463e9ZTJIlIBiT5Rn5l0cacOZiK9afMK8ljtkhgI 4o+PVW60eZHuQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.178.29] ([79.232.156.142]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MysVs-1qTDbP1qKo-00vzbD; Sat, 04 Mar 2023 17:02:49 +0100 Content-Type: multipart/mixed; boundary="------------00NT0W1v0Ox3ptKR7p0CWyai" Message-ID: <48caf060-4349-b077-24da-8bf53ed4b650@gmx.de> Date: Sat, 4 Mar 2023 17:02:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH, v2] Fortran: fix CLASS attribute handling [PR106856] To: Mikael Morin , sgk@troutmask.apl.washington.edu, Harald Anlauf via Fortran Cc: gcc-patches , tobias@codesourcery.com Newsgroups: gmane.comp.gcc.patches,gmane.comp.gcc.fortran References: <5b42f0b7-e217-555d-b1f2-4b623f3ae150@orange.fr> <5f1e8202-303e-5da2-c42b-8eab00a12a97@orange.fr> Content-Language: en-US From: Harald Anlauf In-Reply-To: <5f1e8202-303e-5da2-c42b-8eab00a12a97@orange.fr> X-Provags-ID: V03:K1:ptunpgDOxHEbfYKEh4DB+xWUbt0DVJ1TMc+5AvMri+bR68TqwNX fmfvoR6Xl/WbrIMUBIbdxROtZRbS74a46IImwFcS9MdTACK4awTLgnmJjU951w4XQPRMYgf BbizgVGcnyBuVaCP3hhKCBsiQ4omrJ3ynxhIe3CDT5bzqGCCiCzjOr1bvKLbWcMZBSvOX4i FxI6HMb9kRH56QIf2e8jw== UI-OutboundReport: notjunk:1;M01:P0:X3BCOwIH6E0=;D9W9lfqp9PrPtS9OpFs9coXYL6K hN9cGNtYKf3nLZX2lTtqpxonCyw1IcELApf/F2102bZvT3QTKFeIENeq0L112q2IaIg+iNFTr dLUUBCrRRL1Xk6PTR35nm79hRGUlS8Z0arlkIPmZ2L7lO5/BV/RMY1oIpKJoFhAYr4JFS32Tp y2QL7MyxpCeCo1OQgqWdfJ+2r1CTtIehTQ4dZVW6RVMLu572BbYcnl+444zdgtgkESCAAR9Iz tke+BmZTZMTKgeMmQFqCj7zCQR9eFs9h/US66DjuEGMABcszAe49ECSdfbOBWn+/JvFtQbsPO BVSLZ/+EJqUL2PaSHb5Rcn04U8H9gZn9Bun1scv8byPy+q8mbRH0TOP2FZQGzhVkzrpynSQsJ ZinBt3DTMQwHjfLM2D2zyTNBGe7gff9HP8OJNE5yf1waRRoGlsYbEyW+NVFLw3Ml7RRZu4e3/ GvV8cHIdt0zGesuzZzhXr74TimD9RFFLb9GwSsc2nepXGucpj5l1vNHGNMOtPhbvQNqZKBvF2 iB3/bpshdAGG6ME80XMnKrT6peAZIzKzKjRRJ+P7+IkX3w/9zz8iIxLwnSy75cdnU7Norcggh zKJ+7tN5AAWIDGsaM87pAykaMYGgL4lgwa3kNIJ3GJulKGgRQqPmMeoxlQM02IrdQkBkng91a CwXkPy3uPEtxG4TfoZVQQnS9SR6G4sZGNfLDzYqXwjYobNSPieXWMeUnHCpwFn92fi34BVbYH ZuC6MZJ41bcVkI2IAsJz6Kk5fppcK6am3lt4I+vczew3OH5KrxbD/Xu9dIjgUc5kya43PW9BR 3roaw7Vv7evizowGHE19BQdf9DbKRdvdVfAVriTX3z+P/FOgEd/4+eFIVkmhWYAN50/cOBWRE vLx5TGApH73cf7qVy8jznv3dccPU9o1S7vVUXkGDvCfMNNr1fUwr4o6lQJnkyhHp/rtPkMfaR wDs73cXoVTQ0w1U1rwdqwbMI/kE= X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP 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: This is a multi-part message in MIME format. --------------00NT0W1v0Ox3ptKR7p0CWyai Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Mikael! Am 04.03.23 um 14:56 schrieb Mikael Morin: > I have found the time finally.=C2=A0 It's not as bad as it seemed.=C2=A0= See below. > >> diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc >> index eec0314cf4c..72d8c6f1c14 100644 >> --- a/gcc/fortran/decl.cc >> +++ b/gcc/fortran/decl.cc >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.pointer =3D CLASS_DATA(sym)->= attr.class_pointer; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.allocatable =3D CLASS_DATA(sy= m)->attr.allocatable; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.dimension =3D CLASS_DATA(sym)= ->attr.dimension; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.codimension =3D CLASS_DATA(sy= m)->attr.codimension; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (as && CLASS_DATA (sym)->as) >> +=C2=A0=C2=A0=C2=A0 sym->as =3D gfc_copy_array_spec (CLASS_DATA (sym)->= as); > > Here the condition on 'CLASS_DATA(sym)->as' makes obviously sense, but I > don't see why there is also a condition on 'as'. > > For example, if the array spec has been previously set on the class > container's first component, and there is no array spec information in > the current statement (i.e. as =3D=3D NULL), sym->as will remain NULL, a= nd a > non-array class container will be built in gfc_build_class_symbol below. Very good catch! Indeed, this fixes the testcase variations. >> @@ -8807,6 +8785,27 @@ attr_decl1 (void) >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 goto cleanup; >> =C2=A0=C2=A0=C2=A0=C2=A0 } >> >> +=C2=A0 if (sym->ts.type =3D=3D BT_CLASS && sym->ts.u.derived->attr.is_= class >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 && !as && !current_attr.pointer && !cur= rent_attr.allocatable >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 && !current_attr.external) >> +=C2=A0=C2=A0=C2=A0 { >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.pointer =3D 0; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.allocatable =3D 0; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.dimension =3D 0; >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sym->attr.codimension =3D 0; > >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 gfc_free_array_spec (sym->as); > sym->as should probably be reset to NULL here. Done. > Maybe both calls to gfc_free_array_spec here and to gfc_copy_array_spec > above can be avoided by doing a simple pointer copy? I tried that, but this produced a crash with a double-free. The attached revised version uses the above proven changes, and extends the new testcase class_74.f90 by variations of the failures remaining with version 1 so that different codepaths are tested. Regtested again on x86_64-pc-linux-gnu. Any further comments? Thanks for your very helpful review! Harald --------------00NT0W1v0Ox3ptKR7p0CWyai Content-Type: text/x-patch; charset=UTF-8; name="pr107074-v2.diff" Content-Disposition: attachment; filename="pr107074-v2.diff" Content-Transfer-Encoding: base64 RnJvbSA3MGNiYTdkYTE4MDIzMjgyNTQ2YjlhNWQ4MGU5NzZmYzM3NDRkNzMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBXZWQsIDUgT2N0IDIwMjIgMjI6MjU6MTQgKzAyMDAKU3ViamVjdDogW1BBVENIXSBG b3J0cmFuOiByZWplY3QgcHJvY2VkdXJlcyBhbmQgcHJvY2VkdXJlIHBvaW50ZXJzIGFzIElP CiBlbGVtZW50IFtQUjEwNzA3NF0KCmdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKCglQUiBmb3J0 cmFuLzEwNzA3NAoJKiByZXNvbHZlLmNjIChyZXNvbHZlX3RyYW5zZmVyKTogQSBwcm9jZWR1 cmUsIHR5cGUtYm91bmQgcHJvY2VkdXJlCglvciBhIHByb2NlZHVyZSBwb2ludGVyIGNhbm5v dCBiZSBhbiBlbGVtZW50IG9mIGFuIElPIGxpc3QuCgkqIHNpbXBsaWZ5LmNjIChnZmNfc2lt cGxpZnlfbWVyZ2UpOiBEbyBub3QgdHJ5IHRvIHJlc2V0IGFycmF5IGxvd2VyCglib3VuZCBm b3Igc2NhbGFycy4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCVBSIGZvcnRyYW4vMTA3 MDc0CgkqIGdmb3J0cmFuLmRnL3ByMTA3MDc0LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFu LmRnL3ByMTA3MDc0Yi5mOTA6IE5ldyB0ZXN0LgotLS0KIGdjYy9mb3J0cmFuL3Jlc29sdmUu Y2MgICAgICAgICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKysKIGdj Yy9mb3J0cmFuL3NpbXBsaWZ5LmNjICAgICAgICAgICAgICAgICB8ICAzICsrLQogZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNzA3NC5mOTAgIHwgMTEgKysrKysrKysrCiBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3MDc0Yi5mOTAgfCAxOCArKysrKysrKysrKysr KwogNCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNzA3NC5m OTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3 MDc0Yi5mOTAKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjIGIvZ2NjL2Zv cnRyYW4vcmVzb2x2ZS5jYwppbmRleCBkMTMzYmMyZDAzNC4uZDlkMTAxNzc1ZjYgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL3Jlc29sdmUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2 ZS5jYwpAQCAtMTAxMzcsNiArMTAxMzcsMzcgQEAgcmVzb2x2ZV90cmFuc2ZlciAoZ2ZjX2Nv ZGUgKmNvZGUpCiAJCSAiYW4gYXNzdW1lZC1zaXplIGFycmF5IiwgJmNvZGUtPmxvYyk7CiAg ICAgICByZXR1cm47CiAgICAgfQorCisgIC8qIENoZWNrIGZvciBwcm9jZWR1cmVzIGFuZCBw cm9jZWR1cmUgcG9pbnRlcnMuICBGb3J0cmFuIDIwMTggaGFzOgorCisgICAgIEMxMjMzIChS MTIxNykgQW4gZXhwcmVzc2lvbiB0aGF0IGlzIGFuIG91dHB1dC1pdGVtIHNoYWxsIG5vdCBo YXZlIGEKKyAgICAgdmFsdWUgdGhhdCBpcyBhIHByb2NlZHVyZSBwb2ludGVyLgorCisgICAg IFRoZXJlIGRvZXMgbm90IGFwcGVhciBhbnkgcmVhc29uIHRvIGFsbG93IHByb2NlZHVyZSBw b2ludGVycyBmb3IKKyAgICAgaW5wdXQsIHNvIHdlIGRpc2FsbG93IHRoZW0gZ2VuZXJhbGx5 LCBhbmQgd2UgcmVqZWN0IHByb2NlZHVyZXMuICAqLworCisgIGlmIChleHAtPmV4cHJfdHlw ZSA9PSBFWFBSX1ZBUklBQkxFKQorICAgIHsKKyAgICAgIC8qIENoZWNrIGZvciB0eXBlLWJv dW5kIHByb2NlZHVyZXMuICAqLworICAgICAgZm9yIChyZWYgPSBleHAtPnJlZjsgcmVmOyBy ZWYgPSByZWYtPm5leHQpCisJaWYgKHJlZi0+dHlwZSA9PSBSRUZfQ09NUE9ORU5UCisJICAg ICYmIHJlZi0+dS5jLmNvbXBvbmVudC0+YXR0ci5mbGF2b3IgPT0gRkxfUFJPQ0VEVVJFKQor CSAgYnJlYWs7CisKKyAgICAgIC8qIFByb2NlZHVyZSBvciBwcm9jZWR1cmUgcG9pbnRlcj8g ICovCisgICAgICBpZiAoZXhwLT50cy50eXBlID09IEJUX1BST0NFRFVSRQorCSAgfHwgKHJl ZiAmJiByZWYtPnUuYy5jb21wb25lbnQtPmF0dHIuZmxhdm9yID09IEZMX1BST0NFRFVSRSkp CisJeworCSAgaWYgKGV4cC0+c3ltdHJlZS0+bi5zeW0tPmF0dHIucHJvY19wb2ludGVyCisJ ICAgICAgfHwgKHJlZiAmJiByZWYtPnUuYy5jb21wb25lbnQtPmF0dHIucHJvY19wb2ludGVy KSkKKwkgICAgZ2ZjX2Vycm9yICgiRGF0YSB0cmFuc2ZlciBlbGVtZW50IGF0ICVMIGNhbm5v dCBiZSBhIHByb2NlZHVyZSAiCisJCSAgICAgICAicG9pbnRlciIsICZjb2RlLT5sb2MpOwor CSAgZWxzZQorCSAgICBnZmNfZXJyb3IgKCJEYXRhIHRyYW5zZmVyIGVsZW1lbnQgYXQgJUwg Y2Fubm90IGJlIGEgcHJvY2VkdXJlIiwKKwkJICAgICAgICZjb2RlLT5sb2MpOworCSAgcmV0 dXJuOworCX0KKyAgICB9CiB9CiAKIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vc2ltcGxp ZnkuY2MgYi9nY2MvZm9ydHJhbi9zaW1wbGlmeS5jYwppbmRleCA2YWM5MmNmOWRiOC4uZjA0 ODJkMzQ5YWYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3NpbXBsaWZ5LmNjCisrKyBiL2dj Yy9mb3J0cmFuL3NpbXBsaWZ5LmNjCkBAIC00OTE1LDcgKzQ5MTUsOCBAQCBnZmNfc2ltcGxp ZnlfbWVyZ2UgKGdmY19leHByICp0c291cmNlLCBnZmNfZXhwciAqZnNvdXJjZSwgZ2ZjX2V4 cHIgKm1hc2spCiAgICAgewogICAgICAgcmVzdWx0ID0gZ2ZjX2NvcHlfZXhwciAobWFzay0+ dmFsdWUubG9naWNhbCA/IHRzb3VyY2UgOiBmc291cmNlKTsKICAgICAgIC8qIFBhcmVudGhl c2lzIGlzIG5lZWRlZCB0byBnZXQgbG93ZXIgYm91bmRzIG9mIDEuICAqLwotICAgICAgcmVz dWx0ID0gZ2ZjX2dldF9wYXJlbnRoZXNlcyAocmVzdWx0KTsKKyAgICAgIGlmIChyZXN1bHQt PnJhbmspCisJcmVzdWx0ID0gZ2ZjX2dldF9wYXJlbnRoZXNlcyAocmVzdWx0KTsKICAgICAg IGdmY19zaW1wbGlmeV9leHByIChyZXN1bHQsIDEpOwogICAgICAgcmV0dXJuIHJlc3VsdDsK ICAgICB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3MDc0 LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDcwNzQuZjkwCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMzYzYzI4NTkxMgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDcwNzQuZjkwCkBAIC0w LDAgKzEsMTEgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgUFIgZm9ydHJhbi8xMDcwNzQg LSBJQ0U6IEJhZCBJTyBiYXNldHlwZSAoOCkKKyEgQ29udHJpYnV0ZWQgYnkgRy5TdGVpbm1l dHoKKworcHJvZ3JhbSBwCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgZXh0ZXJuYWwg ICAgICAgIDo6IGEKKyAgcHJvY2VkdXJlKHJlYWwpLCBwb2ludGVyIDo6IGIKKyAgcHJpbnQg KiwgbWVyZ2UgKGEsIGEsIC50cnVlLikgISB7IGRnLWVycm9yICJwcm9jZWR1cmUiIH0KKyAg cHJpbnQgKiwgbWVyZ2UgKGIsIGIsIC50cnVlLikgISB7IGRnLWVycm9yICJwcm9jZWR1cmUg cG9pbnRlciIgfQorZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L3ByMTA3MDc0Yi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3MDc0Yi5m OTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk4YzNmYzBiOTBh Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNzA3 NGIuZjkwCkBAIC0wLDAgKzEsMTggQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgQWRkaXRp b25hbCB0ZXN0IGZvciBQUiBmb3J0cmFuLzEwNzA3NAorISBDb250cmlidXRlZCBieSBNLk1v cmluCisKK3Byb2dyYW0gcAorICBpbXBsaWNpdCBub25lCisgIHR5cGUgOjogdAorICAgIHBy b2NlZHVyZShmKSwgcG9pbnRlciwgbm9wYXNzIDo6IGIKKyAgZW5kIHR5cGUgdAorICB0eXBl KHQpIDo6IGEKKworICBpbnRlcmZhY2UKKyAgICByZWFsIGZ1bmN0aW9uIGYoKQorICAgIGVu ZCBmdW5jdGlvbiBmCisgIGVuZCBpbnRlcmZhY2UKKworICBwcmludCAqLCBtZXJnZSAoYSVi LCBhJWIsIC50cnVlLikgISB7IGRnLWVycm9yICJwcm9jZWR1cmUgcG9pbnRlciIgfQorZW5k Ci0tIAoyLjM1LjMKCg== --------------00NT0W1v0Ox3ptKR7p0CWyai-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ciao.gmane.io (ciao.gmane.io [116.202.254.214]) by sourceware.org (Postfix) with ESMTPS id 939753858D20 for ; Sat, 4 Mar 2023 16:20:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 939753858D20 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=m.gmane-mx.org Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1pYUc6-0008Nl-FZ for gcc-patches@gcc.gnu.org; Sat, 04 Mar 2023 17:20:02 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: gcc-patches@gcc.gnu.org From: Harald Anlauf Subject: Re: [PATCH, v2] Fortran: fix CLASS attribute handling [PR106856] Date: Sat, 4 Mar 2023 17:02:47 +0100 Message-ID: <48caf060-4349-b077-24da-8bf53ed4b650@gmx.de> References: <5b42f0b7-e217-555d-b1f2-4b623f3ae150@orange.fr> <5f1e8202-303e-5da2-c42b-8eab00a12a97@orange.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------00NT0W1v0Ox3ptKR7p0CWyai" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US In-Reply-To: <5f1e8202-303e-5da2-c42b-8eab00a12a97@orange.fr> Cc: fortran@gcc.gnu.org X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,BODY_8BITS,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=unavailable 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: <20230304160247.ovI2PnLNu1nLE8P2m8SbezsQfXlCzQkRuuXwEdgDVus@z> This is a multi-part message in MIME format. --------------00NT0W1v0Ox3ptKR7p0CWyai Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Mikael! Am 04.03.23 um 14:56 schrieb Mikael Morin: > I have found the time finally.  It's not as bad as it seemed.  See below. > >> diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc >> index eec0314cf4c..72d8c6f1c14 100644 >> --- a/gcc/fortran/decl.cc >> +++ b/gcc/fortran/decl.cc >> +      sym->attr.pointer = CLASS_DATA(sym)->attr.class_pointer; >> +      sym->attr.allocatable = CLASS_DATA(sym)->attr.allocatable; >> +      sym->attr.dimension = CLASS_DATA(sym)->attr.dimension; >> +      sym->attr.codimension = CLASS_DATA(sym)->attr.codimension; >> +      if (as && CLASS_DATA (sym)->as) >> +    sym->as = gfc_copy_array_spec (CLASS_DATA (sym)->as); > > Here the condition on 'CLASS_DATA(sym)->as' makes obviously sense, but I > don't see why there is also a condition on 'as'. > > For example, if the array spec has been previously set on the class > container's first component, and there is no array spec information in > the current statement (i.e. as == NULL), sym->as will remain NULL, and a > non-array class container will be built in gfc_build_class_symbol below. Very good catch! Indeed, this fixes the testcase variations. >> @@ -8807,6 +8785,27 @@ attr_decl1 (void) >>        goto cleanup; >>      } >> >> +  if (sym->ts.type == BT_CLASS && sym->ts.u.derived->attr.is_class >> +      && !as && !current_attr.pointer && !current_attr.allocatable >> +      && !current_attr.external) >> +    { >> +      sym->attr.pointer = 0; >> +      sym->attr.allocatable = 0; >> +      sym->attr.dimension = 0; >> +      sym->attr.codimension = 0; > >> +      gfc_free_array_spec (sym->as); > sym->as should probably be reset to NULL here. Done. > Maybe both calls to gfc_free_array_spec here and to gfc_copy_array_spec > above can be avoided by doing a simple pointer copy? I tried that, but this produced a crash with a double-free. The attached revised version uses the above proven changes, and extends the new testcase class_74.f90 by variations of the failures remaining with version 1 so that different codepaths are tested. Regtested again on x86_64-pc-linux-gnu. Any further comments? Thanks for your very helpful review! Harald --------------00NT0W1v0Ox3ptKR7p0CWyai Content-Type: text/x-patch; charset=UTF-8; name="pr107074-v2.diff" Content-Disposition: attachment; filename="pr107074-v2.diff" Content-Transfer-Encoding: base64 RnJvbSA3MGNiYTdkYTE4MDIzMjgyNTQ2YjlhNWQ4MGU5NzZmYzM3NDRkNzMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBXZWQsIDUgT2N0IDIwMjIgMjI6MjU6MTQgKzAyMDAKU3ViamVjdDogW1BBVENIXSBG b3J0cmFuOiByZWplY3QgcHJvY2VkdXJlcyBhbmQgcHJvY2VkdXJlIHBvaW50ZXJzIGFzIElP CiBlbGVtZW50IFtQUjEwNzA3NF0KCmdjYy9mb3J0cmFuL0NoYW5nZUxvZzoKCglQUiBmb3J0 cmFuLzEwNzA3NAoJKiByZXNvbHZlLmNjIChyZXNvbHZlX3RyYW5zZmVyKTogQSBwcm9jZWR1 cmUsIHR5cGUtYm91bmQgcHJvY2VkdXJlCglvciBhIHByb2NlZHVyZSBwb2ludGVyIGNhbm5v dCBiZSBhbiBlbGVtZW50IG9mIGFuIElPIGxpc3QuCgkqIHNpbXBsaWZ5LmNjIChnZmNfc2lt cGxpZnlfbWVyZ2UpOiBEbyBub3QgdHJ5IHRvIHJlc2V0IGFycmF5IGxvd2VyCglib3VuZCBm b3Igc2NhbGFycy4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCVBSIGZvcnRyYW4vMTA3 MDc0CgkqIGdmb3J0cmFuLmRnL3ByMTA3MDc0LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFu LmRnL3ByMTA3MDc0Yi5mOTA6IE5ldyB0ZXN0LgotLS0KIGdjYy9mb3J0cmFuL3Jlc29sdmUu Y2MgICAgICAgICAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKysKIGdj Yy9mb3J0cmFuL3NpbXBsaWZ5LmNjICAgICAgICAgICAgICAgICB8ICAzICsrLQogZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNzA3NC5mOTAgIHwgMTEgKysrKysrKysrCiBnY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3MDc0Yi5mOTAgfCAxOCArKysrKysrKysrKysr KwogNCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNzA3NC5m OTAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3 MDc0Yi5mOTAKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjIGIvZ2NjL2Zv cnRyYW4vcmVzb2x2ZS5jYwppbmRleCBkMTMzYmMyZDAzNC4uZDlkMTAxNzc1ZjYgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL3Jlc29sdmUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2 ZS5jYwpAQCAtMTAxMzcsNiArMTAxMzcsMzcgQEAgcmVzb2x2ZV90cmFuc2ZlciAoZ2ZjX2Nv ZGUgKmNvZGUpCiAJCSAiYW4gYXNzdW1lZC1zaXplIGFycmF5IiwgJmNvZGUtPmxvYyk7CiAg ICAgICByZXR1cm47CiAgICAgfQorCisgIC8qIENoZWNrIGZvciBwcm9jZWR1cmVzIGFuZCBw cm9jZWR1cmUgcG9pbnRlcnMuICBGb3J0cmFuIDIwMTggaGFzOgorCisgICAgIEMxMjMzIChS MTIxNykgQW4gZXhwcmVzc2lvbiB0aGF0IGlzIGFuIG91dHB1dC1pdGVtIHNoYWxsIG5vdCBo YXZlIGEKKyAgICAgdmFsdWUgdGhhdCBpcyBhIHByb2NlZHVyZSBwb2ludGVyLgorCisgICAg IFRoZXJlIGRvZXMgbm90IGFwcGVhciBhbnkgcmVhc29uIHRvIGFsbG93IHByb2NlZHVyZSBw b2ludGVycyBmb3IKKyAgICAgaW5wdXQsIHNvIHdlIGRpc2FsbG93IHRoZW0gZ2VuZXJhbGx5 LCBhbmQgd2UgcmVqZWN0IHByb2NlZHVyZXMuICAqLworCisgIGlmIChleHAtPmV4cHJfdHlw ZSA9PSBFWFBSX1ZBUklBQkxFKQorICAgIHsKKyAgICAgIC8qIENoZWNrIGZvciB0eXBlLWJv dW5kIHByb2NlZHVyZXMuICAqLworICAgICAgZm9yIChyZWYgPSBleHAtPnJlZjsgcmVmOyBy ZWYgPSByZWYtPm5leHQpCisJaWYgKHJlZi0+dHlwZSA9PSBSRUZfQ09NUE9ORU5UCisJICAg ICYmIHJlZi0+dS5jLmNvbXBvbmVudC0+YXR0ci5mbGF2b3IgPT0gRkxfUFJPQ0VEVVJFKQor CSAgYnJlYWs7CisKKyAgICAgIC8qIFByb2NlZHVyZSBvciBwcm9jZWR1cmUgcG9pbnRlcj8g ICovCisgICAgICBpZiAoZXhwLT50cy50eXBlID09IEJUX1BST0NFRFVSRQorCSAgfHwgKHJl ZiAmJiByZWYtPnUuYy5jb21wb25lbnQtPmF0dHIuZmxhdm9yID09IEZMX1BST0NFRFVSRSkp CisJeworCSAgaWYgKGV4cC0+c3ltdHJlZS0+bi5zeW0tPmF0dHIucHJvY19wb2ludGVyCisJ ICAgICAgfHwgKHJlZiAmJiByZWYtPnUuYy5jb21wb25lbnQtPmF0dHIucHJvY19wb2ludGVy KSkKKwkgICAgZ2ZjX2Vycm9yICgiRGF0YSB0cmFuc2ZlciBlbGVtZW50IGF0ICVMIGNhbm5v dCBiZSBhIHByb2NlZHVyZSAiCisJCSAgICAgICAicG9pbnRlciIsICZjb2RlLT5sb2MpOwor CSAgZWxzZQorCSAgICBnZmNfZXJyb3IgKCJEYXRhIHRyYW5zZmVyIGVsZW1lbnQgYXQgJUwg Y2Fubm90IGJlIGEgcHJvY2VkdXJlIiwKKwkJICAgICAgICZjb2RlLT5sb2MpOworCSAgcmV0 dXJuOworCX0KKyAgICB9CiB9CiAKIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vc2ltcGxp ZnkuY2MgYi9nY2MvZm9ydHJhbi9zaW1wbGlmeS5jYwppbmRleCA2YWM5MmNmOWRiOC4uZjA0 ODJkMzQ5YWYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3NpbXBsaWZ5LmNjCisrKyBiL2dj Yy9mb3J0cmFuL3NpbXBsaWZ5LmNjCkBAIC00OTE1LDcgKzQ5MTUsOCBAQCBnZmNfc2ltcGxp ZnlfbWVyZ2UgKGdmY19leHByICp0c291cmNlLCBnZmNfZXhwciAqZnNvdXJjZSwgZ2ZjX2V4 cHIgKm1hc2spCiAgICAgewogICAgICAgcmVzdWx0ID0gZ2ZjX2NvcHlfZXhwciAobWFzay0+ dmFsdWUubG9naWNhbCA/IHRzb3VyY2UgOiBmc291cmNlKTsKICAgICAgIC8qIFBhcmVudGhl c2lzIGlzIG5lZWRlZCB0byBnZXQgbG93ZXIgYm91bmRzIG9mIDEuICAqLwotICAgICAgcmVz dWx0ID0gZ2ZjX2dldF9wYXJlbnRoZXNlcyAocmVzdWx0KTsKKyAgICAgIGlmIChyZXN1bHQt PnJhbmspCisJcmVzdWx0ID0gZ2ZjX2dldF9wYXJlbnRoZXNlcyAocmVzdWx0KTsKICAgICAg IGdmY19zaW1wbGlmeV9leHByIChyZXN1bHQsIDEpOwogICAgICAgcmV0dXJuIHJlc3VsdDsK ICAgICB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3MDc0 LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDcwNzQuZjkwCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMzYzYzI4NTkxMgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDcwNzQuZjkwCkBAIC0w LDAgKzEsMTEgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgUFIgZm9ydHJhbi8xMDcwNzQg LSBJQ0U6IEJhZCBJTyBiYXNldHlwZSAoOCkKKyEgQ29udHJpYnV0ZWQgYnkgRy5TdGVpbm1l dHoKKworcHJvZ3JhbSBwCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgZXh0ZXJuYWwg ICAgICAgIDo6IGEKKyAgcHJvY2VkdXJlKHJlYWwpLCBwb2ludGVyIDo6IGIKKyAgcHJpbnQg KiwgbWVyZ2UgKGEsIGEsIC50cnVlLikgISB7IGRnLWVycm9yICJwcm9jZWR1cmUiIH0KKyAg cHJpbnQgKiwgbWVyZ2UgKGIsIGIsIC50cnVlLikgISB7IGRnLWVycm9yICJwcm9jZWR1cmUg cG9pbnRlciIgfQorZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L3ByMTA3MDc0Yi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA3MDc0Yi5m OTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk4YzNmYzBiOTBh Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNzA3 NGIuZjkwCkBAIC0wLDAgKzEsMTggQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgQWRkaXRp b25hbCB0ZXN0IGZvciBQUiBmb3J0cmFuLzEwNzA3NAorISBDb250cmlidXRlZCBieSBNLk1v cmluCisKK3Byb2dyYW0gcAorICBpbXBsaWNpdCBub25lCisgIHR5cGUgOjogdAorICAgIHBy b2NlZHVyZShmKSwgcG9pbnRlciwgbm9wYXNzIDo6IGIKKyAgZW5kIHR5cGUgdAorICB0eXBl KHQpIDo6IGEKKworICBpbnRlcmZhY2UKKyAgICByZWFsIGZ1bmN0aW9uIGYoKQorICAgIGVu ZCBmdW5jdGlvbiBmCisgIGVuZCBpbnRlcmZhY2UKKworICBwcmludCAqLCBtZXJnZSAoYSVi LCBhJWIsIC50cnVlLikgISB7IGRnLWVycm9yICJwcm9jZWR1cmUgcG9pbnRlciIgfQorZW5k Ci0tIAoyLjM1LjMKCg== --------------00NT0W1v0Ox3ptKR7p0CWyai--