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 4C1123857813 for ; Mon, 31 Oct 2022 20:29:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4C1123857813 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 1opbPW-0007WI-QY for fortran@gcc.gnu.org; Mon, 31 Oct 2022 21:29:30 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: fortran@gcc.gnu.org From: Harald Anlauf Subject: Re: [PATCH, v2] Fortran: ordering of hidden procedure arguments [PR107441] Date: Mon, 31 Oct 2022 21:29:26 +0100 Message-ID: <93a5f029-4411-3424-f6ee-3b2bcf210050@gmx.de> References: <7d8ddf07-e66d-2678-de99-0e575c70ea17@orange.fr> <327319ac-4ef9-1e48-e993-57113d802d3b@orange.fr> <85a5951a-7ea4-57b3-895a-ff7dbf1ef92e@orange.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------71z2Lc0ViuJlEPrwl9RIxowR" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Content-Language: en-US In-Reply-To: <85a5951a-7ea4-57b3-895a-ff7dbf1ef92e@orange.fr> Cc: gcc-patches@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=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: <20221031202926.G7yE7Fp-rxMy9FXs0Bz4DTWlkIF3sihxZqSJ3Vx2ld8@z> This is a multi-part message in MIME format. --------------71z2Lc0ViuJlEPrwl9RIxowR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Mikael, thanks a lot, your testcases broke my initial (and incorrect) patch in multiple ways. I understand now that the right solution is much simpler and smaller. I've added your testcases, see attached, with a simple scan of the dump for the generated order of hidden arguments in the function decl for the last testcase. Regtested again on x86_64-pc-linux-gnu. OK now? Thanks, Harald Am 31.10.22 um 10:57 schrieb Mikael Morin: > Le 30/10/2022 à 22:25, Mikael Morin a écrit : >> Le 30/10/2022 à 20:23, Mikael Morin a écrit : >>> Another probable issue is your change to create_function_arglist >>> changes arglist/hidden_arglist without also changing >>> typelist/hidden_typelist accordingly.  I think a change to >>> gfc_get_function_type is also necessary: as the function decl is >>> changed, the decl type need to be changed as well. >>> >>> I will see whether I can manage to exhibit testcases for these issues. >>> >> Here is a test for the type vs decl mismatch. >> >> ! { dg-do run } >> ! >> ! PR fortran/107441 >> ! Check that procedure types and procedure decls match when the procedure >> ! has both chaacter-typed and optional value args. >> >> program p >>    interface >>      subroutine i(c, o) >>        character(*) :: c >>        integer, optional, value :: o >>      end subroutine i >>    end interface >>    procedure(i), pointer :: pp > A pointer initialization is missing here: >     pp => s >>    call pp("abcd") >> contains >>    subroutine s(c, o) >>      character(*) :: c >>      integer, optional, value :: o >>      if (present(o)) stop 1 >>      if (len(c) /= 4) stop 2 >>      if (c /= "abcd") stop 3 >>    end subroutine s >> end program p >> > > With the additional initialization, the test passes, so it's not very > useful.  The type mismatch is visible in the dump though, so maybe a > dump match can be used. > --------------71z2Lc0ViuJlEPrwl9RIxowR Content-Type: text/x-patch; charset=UTF-8; name="pr107441-v2.diff" Content-Disposition: attachment; filename="pr107441-v2.diff" Content-Transfer-Encoding: base64 RnJvbSA3MDU2MjhjODlmYWExMTM1ZWQ5YTQ0NmI4NGU4MzFiYmVhZDYwOTVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBGcmksIDI4IE9jdCAyMDIyIDIxOjU4OjA4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogb3JkZXJpbmcgb2YgaGlkZGVuIHByb2NlZHVyZSBhcmd1bWVudHMgW1BSMTA3 NDQxXQoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCVBSIGZvcnRyYW4vMTA3NDQxCgkqIHRy YW5zLWRlY2wuY2MgKGNyZWF0ZV9mdW5jdGlvbl9hcmdsaXN0KTogQWRqdXN0IHRoZSBvcmRl cmluZyBvZgoJYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaGlkZGVuIHByb2NlZHVyZSBhcmd1 bWVudHMgdG8gbWF0Y2ggdGhlCglkb2N1bWVudGVkIEFCSSBmb3IgZ2ZvcnRyYW4uICBUaGUg cHJlc2VudCBzdGF0dXMgZm9yIG9wdGlvbmFsK3ZhbHVlCglhcmd1bWVudHMgaXMgcGFzc2Vk IGJlZm9yZSBjaGFyYWN0ZXIgbGVuZ3RoIGFuZCBjb2FycmF5IHRva2VuIGFuZAoJb2Zmc2V0 LgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJUFIgZm9ydHJhbi8xMDc0NDEKICAgICAg ICAqIGdmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0NDEtY2FmLmY5MDogTmV3IHRlc3QuCgkq IGdmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF82LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0 cmFuLmRnL29wdGlvbmFsX2Fic2VudF83LmY5MDogTmV3IHRlc3QuCi0tLQogZ2NjL2ZvcnRy YW4vdHJhbnMtZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgIHwgIDggKystCiAuLi4vZ2Zv cnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1jYWYuZjkwICAgICAgfCAyNyArKysrKysrKysK IC4uLi9nZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNi5mOTAgICAgICAgICB8IDYwICsr KysrKysrKysrKysrKysrKysKIC4uLi9nZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNy5m OTAgICAgICAgICB8IDMwICsrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5L3ByMTA3NDQxLWNhZi5mOTAKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF82LmY5 MAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9u YWxfYWJzZW50XzcuZjkwCgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5j YyBiL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MKaW5kZXggNjM1MTViOTA3MmEuLjY0YjM1 ZjA1NGU1IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjCisrKyBiL2dj Yy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MKQEAgLTI1MDgsNyArMjUwOCw3IEBAIGNyZWF0ZV9m dW5jdGlvbl9hcmdsaXN0IChnZmNfc3ltYm9sICogc3ltKQogICB0cmVlIGZuZGVjbDsKICAg Z2ZjX2Zvcm1hbF9hcmdsaXN0ICpmOwogICB0cmVlIHR5cGVsaXN0LCBoaWRkZW5fdHlwZWxp c3Q7Ci0gIHRyZWUgYXJnbGlzdCwgaGlkZGVuX2FyZ2xpc3Q7CisgIHRyZWUgYXJnbGlzdCwg aGlkZGVuX2FyZ2xpc3QsIG9wdHZhbF9hcmdsaXN0OwogICB0cmVlIHR5cGU7CiAgIHRyZWUg cGFybTsKIApAQCAtMjUxOCw2ICsyNTE4LDcgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3Qg KGdmY19zeW1ib2wgKiBzeW0pCiAgICAgIHRoZSBuZXcgRlVOQ1RJT05fREVDTCBub2RlLiAg Ki8KICAgYXJnbGlzdCA9IE5VTExfVFJFRTsKICAgaGlkZGVuX2FyZ2xpc3QgPSBOVUxMX1RS RUU7CisgIG9wdHZhbF9hcmdsaXN0ID0gTlVMTF9UUkVFOwogICB0eXBlbGlzdCA9IFRZUEVf QVJHX1RZUEVTIChUUkVFX1RZUEUgKGZuZGVjbCkpOwogCiAgIGlmIChzeW0tPmF0dHIuZW50 cnlfbWFzdGVyKQpAQCAtMjcxMiw3ICsyNzEzLDcgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xp c3QgKGdmY19zeW1ib2wgKiBzeW0pCiAJCQkgICAgUEFSTV9ERUNMLCBnZXRfaWRlbnRpZmll ciAobmFtZSksCiAJCQkgICAgYm9vbGVhbl90eXBlX25vZGUpOwogCi0gICAgICAgICAgaGlk ZGVuX2FyZ2xpc3QgPSBjaGFpbm9uIChoaWRkZW5fYXJnbGlzdCwgdG1wKTsKKwkgIG9wdHZh bF9hcmdsaXN0ID0gY2hhaW5vbiAob3B0dmFsX2FyZ2xpc3QsIHRtcCk7CiAgICAgICAgICAg REVDTF9DT05URVhUICh0bXApID0gZm5kZWNsOwogICAgICAgICAgIERFQ0xfQVJUSUZJQ0lB TCAodG1wKSA9IDE7CiAgICAgICAgICAgREVDTF9BUkdfVFlQRSAodG1wKSA9IGJvb2xlYW5f dHlwZV9ub2RlOwpAQCAtMjg2Myw2ICsyODY0LDkgQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xp c3QgKGdmY19zeW1ib2wgKiBzeW0pCiAgICAgICB0eXBlbGlzdCA9IFRSRUVfQ0hBSU4gKHR5 cGVsaXN0KTsKICAgICB9CiAKKyAgLyogQWRkIGhpZGRlbiBwcmVzZW50IHN0YXR1cyBmb3Ig b3B0aW9uYWwrdmFsdWUgYXJndW1lbnRzLiAgKi8KKyAgYXJnbGlzdCA9IGNoYWlub24gKGFy Z2xpc3QsIG9wdHZhbF9hcmdsaXN0KTsKKwogICAvKiBBZGQgdGhlIGhpZGRlbiBzdHJpbmcg bGVuZ3RoIHBhcmFtZXRlcnMsIHVubGVzcyB0aGUgcHJvY2VkdXJlCiAgICAgIGlzIGJpbmQo QykuICAqLwogICBpZiAoIXN5bS0+YXR0ci5pc19iaW5kX2MpCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0NDEtY2FmLmY5MCBiL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1jYWYuZjkwCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yM2IyMjQyZTIxNwotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS9wcjEwNzQ0MS1j YWYuZjkwCkBAIC0wLDAgKzEsMjcgQEAKKyEgeyBkZy1kbyBydW4gfQorIQorISBQUiBmb3J0 cmFuLzEwNzQ0MQorISBDaGVjayB0aGF0IHdpdGggLWZjb2FycmF5PWxpYiwgY29hcnJheSBt ZXRhZGF0YSBhcmd1bWVudHMgYXJlIHBhc3NlZAorISBpbiB0aGUgcmlnaHQgb3JkZXIgdG8g cHJvY2VkdXJlcy4KKyEKKyEgQ29udHJpYnV0ZWQgYnkgTS5Nb3JpbgorCitwcm9ncmFtIHAK KyAgaW50ZWdlciA6OiBjaVsqXQorICBjaSA9IDE3CisgIGNhbGwgcygxLCBjaSwgImFiY2Qi KQorY29udGFpbnMKKyAgc3Vicm91dGluZSBzKHJhLCBjYSwgYykKKyAgICBpbnRlZ2VyIDo6 IHJhLCBjYVsqXQorICAgIGNoYXJhY3RlcigqKSA6OiBjCisgICAgY2FbMV0gPSAxMworICAg IGlmIChyYSAvPSAxKSBzdG9wIDEKKyAgICBpZiAodGhpc19pbWFnZSgpID09IDEpIHRoZW4K KyAgICAgIGlmIChjYSAvPSAxMykgc3RvcCAyCisgICAgZWxzZQorICAgICAgaWYgKGNhIC89 IDE3KSBzdG9wIDMKKyAgICBlbmQgaWYKKyAgICBpZiAobGVuKGMpIC89IDQpIHN0b3AgNAor ICAgIGlmIChjIC89ICJhYmNkIikgc3RvcCA1CisgIGVuZCBzdWJyb3V0aW5lIHMKK2VuZCBw cm9ncmFtIHAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9u YWxfYWJzZW50XzYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9vcHRpb25hbF9h YnNlbnRfNi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4 YWJiMDY5ODBhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9vcHRpb25hbF9hYnNlbnRfNi5mOTAKQEAgLTAsMCArMSw2MCBAQAorISB7IGRnLWRvIHJ1 biB9CishIFBSIGZvcnRyYW4vMTA3NDQxCishCishIFRlc3QgVkFMVUUgKyBPUFRJT05BTCBm b3IgaW50ZWdlci9yZWFsLy4uLgorISBpbiB0aGUgcHJlc2VuY2Ugb2Ygbm9uLW9wdGlvbmFs IGNoYXJhY3RlciBkdW1taWVzCisKK3Byb2dyYW0gYnVnZGVtbworICBpbXBsaWNpdCBub25l CisgIGNoYXJhY3RlciA6OiBzID0gJ2EnCisgIGludGVnZXIgICA6OiB0CisKKyAgdCA9IHRl c3RvcHRpb25hbChzKQorICBjYWxsIHRlc3QyIChzKQorICBjYWxsIHRlc3QzIChzKQorICBj YWxsIHRlc3Q0ICh3PScxMjMnLHg9NDIpCisKK2NvbnRhaW5zCisKKyAgZnVuY3Rpb24gdGVz dG9wdGlvbmFsICh3LCB4KSByZXN1bHQodCkKKyAgICBjaGFyYWN0ZXIsIGludGVudChpbikg ICAgICAgICAgICAgICAgICA6OiB3CisgICAgaW50ZWdlciwgICBpbnRlbnQoaW4pLCB2YWx1 ZSwgb3B0aW9uYWwgOjogeAorICAgIGludGVnZXIgOjogdAorICAgIHByaW50ICosICdwcmVz ZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIHQgPSAwCisgICAgaWYgKHByZXNlbnQgKHgp KSBzdG9wIDEKKyAgZW5kIGZ1bmN0aW9uIHRlc3RvcHRpb25hbAorCisgIHN1YnJvdXRpbmUg dGVzdDIgKHcsIHgpCisgICAgY2hhcmFjdGVyLCBpbnRlbnQoaW4pICAgICAgICAgICAgICAg ICAgOjogdworICAgIGludGVnZXIsICAgaW50ZW50KGluKSwgdmFsdWUsIG9wdGlvbmFsIDo6 IHgKKyAgICBwcmludCosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIGlmIChw cmVzZW50ICh4KSkgc3RvcCAyCisgIGVuZCBzdWJyb3V0aW5lIHRlc3QyCisKKyAgc3Vicm91 dGluZSB0ZXN0MyAodywgeCkKKyAgICBjaGFyYWN0ZXIsIGludGVudChpbiksICAgICAgICBv cHRpb25hbCA6OiB3CisgICAgaW50ZWdlciwgICBpbnRlbnQoaW4pLCB2YWx1ZSwgb3B0aW9u YWwgOjogeAorICAgIHByaW50ICosICdwcmVzZW50KHcpIGlzJywgcHJlc2VudCh3KQorICAg IHByaW50ICosICdwcmVzZW50KHgpIGlzJywgcHJlc2VudCh4KQorICAgIGlmICgubm90LiBw cmVzZW50ICh3KSkgc3RvcCAzCisgICAgaWYgKHByZXNlbnQgKHgpKSBzdG9wIDQKKyAgZW5k IHN1YnJvdXRpbmUgdGVzdDMKKworICBzdWJyb3V0aW5lIHRlc3Q0IChyLCB3LCB4KQorICAg IHJlYWwsICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIG9wdGlvbmFsIDo6IHIKKyAgICBj aGFyYWN0ZXIoKiksIGludGVudChpbiksICAgICAgICBvcHRpb25hbCA6OiB3CisgICAgaW50 ZWdlciwgICAgICAgICAgICAgICAgICB2YWx1ZSwgb3B0aW9uYWwgOjogeAorICAgIHByaW50 ICosICdwcmVzZW50KHIpIGlzJywgcHJlc2VudChyKQorICAgIHByaW50ICosICdwcmVzZW50 KHcpIGlzJywgcHJlc2VudCh3KQorICAgIHByaW50ICosICdwcmVzZW50KHgpIGlzJywgcHJl c2VudCh4KQorICAgIGlmIChwcmVzZW50IChyKSkgc3RvcCA1CisgICAgaWYgKC5ub3QuIHBy ZXNlbnQgKHcpKSBzdG9wIDYKKyAgICBpZiAoLm5vdC4gcHJlc2VudCAoeCkpIHN0b3AgNwor ICAgIHByaW50ICosICd4PScsIHgKKyAgICBwcmludCAqLCAnbGVuKHcpPScsIGxlbih3KQor ICAgIGlmIChsZW4odykgLz0gMykgc3RvcCA4CisgICAgaWYgKHggLz0gNDIpIHN0b3AgOQor ICBlbmQgc3Vicm91dGluZSB0ZXN0NAorCitlbmQgcHJvZ3JhbSBidWdkZW1vCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2VudF83LmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50XzcuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZmE3MTY2YzdlMwotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50 XzcuZjkwCkBAIC0wLDAgKzEsMzAgQEAKKyEgeyBkZy1kbyBydW4gfQorISB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKyEKKyEgUFIgZm9ydHJh bi8xMDc0NDEKKyEgQ2hlY2sgdGhhdCBwcm9jZWR1cmUgdHlwZXMgYW5kIHByb2NlZHVyZSBk ZWNscyBtYXRjaCB3aGVuIHRoZSBwcm9jZWR1cmUKKyEgaGFzIGJvdGggY2hhcmFjdGVyLXR5 cGVkIGFuZCBvcHRpb25hbCB2YWx1ZSBhcmdzLgorIQorISBDb250cmlidXRlZCBieSBNLk1v cmluCisKK3Byb2dyYW0gcAorICBpbnRlcmZhY2UKKyAgICBzdWJyb3V0aW5lIGkoYywgbykK KyAgICAgIGNoYXJhY3RlcigqKSA6OiBjCisgICAgICBpbnRlZ2VyLCBvcHRpb25hbCwgdmFs dWUgOjogbworICAgIGVuZCBzdWJyb3V0aW5lIGkKKyAgZW5kIGludGVyZmFjZQorICBwcm9j ZWR1cmUoaSksIHBvaW50ZXIgOjogcHAKKyAgcHAgPT4gcworICBjYWxsIHBwKCJhYmNkIikK K2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgcyhjLCBvKQorICAgIGNoYXJhY3RlcigqKSA6OiBj CisgICAgaW50ZWdlciwgb3B0aW9uYWwsIHZhbHVlIDo6IG8KKyAgICBpZiAocHJlc2VudChv KSkgc3RvcCAxCisgICAgaWYgKGxlbihjKSAvPSA0KSBzdG9wIDIKKyAgICBpZiAoYyAvPSAi YWJjZCIpIHN0b3AgMworICBlbmQgc3Vicm91dGluZSBzCitlbmQgcHJvZ3JhbSBwCisKKyEg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2b2lkIHMgLiogYywgLiogbywgbG9naWNh bC4qIF9vLCBpbnRlZ2VyLiogX2MiICJvcmlnaW5hbCIgfSB9Ci0tIAoyLjM1LjMKCg== --------------71z2Lc0ViuJlEPrwl9RIxowR--