From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) by sourceware.org (Postfix) with ESMTPS id 84151388CF1C for ; Thu, 15 Dec 2022 12:51:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 84151388CF1C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lf1-x12c.google.com with SMTP id p36so15477740lfa.12 for ; Thu, 15 Dec 2022 04:51:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=c4TxmvS4kDoDUTOqgoT5iddcPtsPlGEn+M20vBxZNJU=; b=O63eoRUzMT20DE0YbefNlDF/1DGc0gaY/gD/UfIkJnKqsW7R+gji2PpJwOaN4+F4BH fXijeREnDadcjxKOADoUiZLVqqJdN2cHxuurGUCbTlyf/E6iFzBbs+89q0VqH9z6Pr+7 b8isDuVwUqAA6nbsOVvdYcNx/U/05CWvNlBNuXeKyFY97UpMMh2t5D0JtfIF9QqBYtO/ knQ+wnVY20u5CgmUwpSq7Ep/xd7hkzMCIldpmKAjNhXL1Yeg+fNH12NwySi6cHZwaClD MjvpuhYCz600kl/H2nAU/L7rZ7fEtnA7RGcjCK1ZtXuyN3OacwwI6nd4Tpf6tjjr1cwJ k6Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=c4TxmvS4kDoDUTOqgoT5iddcPtsPlGEn+M20vBxZNJU=; b=gBSaw+2Gg3zHhqoMVIBoplRVF6asUqzKr/VYEx4+A9rRpfTY+AxlETpaYcUgqoI6/K 3G7Lq9NtrjmMZ1n5sHRAjd4rgLeFFN/QbEa291rRgkaKwgJsjdo0JYGDBZ4+Yl7UwLD7 7Bciw2jpUR5IK9/WwOjvj6noZ9h1481MgaxpDc4AC3gbn1xegkMbhRjgGlxOc2Usqafe wM0fOzYY6bl9WnyJaFVVElXStdahCm1scNL3rfna8uIZxtUlxvXUu3eLazfsRcVDSSHu Cud6w2CN671NYEXs1wKDZF8bnw2QWEV+B12u0tcUU6mACiM6LQlHwvQX6+j6acnAkjSm uAYg== X-Gm-Message-State: ANoB5pluXClNurKTMC9ijCoEQvdrBjfVv9o93+YrQqjMF9tyxg0Khxd8 kzj3jfpCgGgChPSloL3GEd9iGx4o4f2ulzAi2N7EPGXWyn4rQg== X-Google-Smtp-Source: AA0mqf7QsiqwI9NmwwJYdhPPsIxHA0/hkhC+XYzBjtUswJgbE1XE/ULVzrNCpDsg6ApgzpuJIAfbLbBGsDlcej0/m0M= X-Received: by 2002:ac2:5f97:0:b0:4b5:918a:51f9 with SMTP id r23-20020ac25f97000000b004b5918a51f9mr5236752lfe.649.1671108697805; Thu, 15 Dec 2022 04:51:37 -0800 (PST) MIME-Version: 1.0 From: Federico Perini Date: Thu, 15 Dec 2022 13:51:26 +0100 Message-ID: Subject: [Bug 106731] ICE on automatic array of derived type with DTIO: need help To: fortran@gcc.gnu.org Content-Type: multipart/mixed; boundary="00000000000050997f05efdd50cd" X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,WEIRD_PORT 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: --00000000000050997f05efdd50cd Content-Type: multipart/alternative; boundary="00000000000050997c05efdd50cb" --00000000000050997c05efdd50cb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, I=E2=80=99m stil trying to fix this ICE bug for an automatic array of a derived type with DTIO: 63 | type(t) :: automatic(n) | 1 internal compiler error: in gfc_trans_auto_array_allocation, at fortran/trans-array.cc:6617 Still digging for the first time in the gfortran code, I need help to move further. So far I=E2=80=99ve found: 1. ICE is triggered in trans-array line 6617 by gcc_assert (!TREE_STATIC (decl)); Makes sense, an automatic array is not SAVEd. 2. Elsewhere, in trans-decl.cc, I found this chunk and commented it out. This fixed the ICE issue, but crashes some test cases i.e. dtio_4.f90 and dtio_14.f90, when built with full optimization (-O3) /* If derived-type variables with DTIO procedures are not made static some bits of code referencing them get optimized away. TODO Understand why this is so and fix it. */ // if (!sym->attr.use_assoc // && ((sym->ts.type =3D=3D BT_DERIVED // && sym->ts.u.derived->attr.has_dtio_procs) // || (sym->ts.type =3D=3D BT_CLASS // && CLASS_DATA (sym)->ts.u.derived->attr.has_dtio_procs))) // TREE_STATIC (decl) =3D 1;3. 3. Of the optimization flags "-fpeel-loops" is the one that triggers the failing tests 3. in dtio_4.f90, the first test fails for 1) non-extended class; 2) derived-type READ. Write works; extended type (BT_CLASS) works. It appears that the optimizer thinks the derived type is not modified by the read statement. 4. If i replace the READ statement with a direct call to the udt routine (`call user_defined_read`) the test succeeds, so I've looked how the tree dumps compare: federico@Federicos-MacBook-Pro dtio % diff callsub withdtio 498c498,500 < CALL user_defined_read ((test1:udt1) (10) ('dt') ((/ 1 /)) (iostat =3D test1:ios) (iomsg =3D test1:iomsg)) --- > READ UNIT=3D10 FMT=3D'(dt)' IOMSG=3Dtest1:iomsg IOSTAT=3Dtest1:ios ADVA= NCE=3D'no' > TRANSFER test1:udt1 > DT_END federico@Federicos-MacBook-Pro dtio % while -fdump-tree-original returns exactly identical dumps: federico@Federicos-MacBook-Pro dtio % diff callsub withdtio federico@Federicos-MacBook-Pro dtio % Now I'm a bit stuck because I have no experience in gfortran coding, more so with the gcc optimizer. I hope some of you can help! But at least, I'm starting to understand how the code structure works. Best, Federico --00000000000050997c05efdd50cb-- --00000000000050997f05efdd50cd Content-Type: application/octet-stream; name="dtio_4.f90" Content-Disposition: attachment; filename="dtio_4.f90" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbp2q6vd0 ISB7IGRnLWRvIHJ1biB9CiEKISBGdW5jdGlvbmFsIHRlc3Qgb2YgVXNlciBE ZWZpbmVkIERlcml2ZWQgVHlwZSBJTy4KIQohIFRoaXMgdGVzdHMgYSBjb21i aW5hdGlvbiBvZiBtb2R1bGUgcHJvY2VkdXJlIGFuZCBnZW5lcmljIHByb2Nl ZHVyZQohIGFuZCBwZXJmb3JtcyByZWFkaW5nIGFuZCB3cml0aW5nIGFuIGFy cmF5IHdpdGggYSBwc2V1ZG8gdXNlciBkZWZpbmVkCiEgdGFnIGF0IHRoZSBi ZWdpbm5pbmcgb2YgdGhlIGZpbGUuCiEKbW9kdWxlIHVzZXJ0eXBlcwogIHR5 cGUgdWR0CiAgICAgaW50ZWdlciA6OiBteWFycmF5KDE1KQogICBjb250YWlu cwogISAgICBwcm9jZWR1cmUgOjogdXNlcl9kZWZpbmVkX3JlYWQKICEgICAg Z2VuZXJpYyA6OiByZWFkIChmb3JtYXR0ZWQpID0+IHVzZXJfZGVmaW5lZF9y ZWFkCiAgZW5kIHR5cGUgdWR0CiAgdHlwZSwgZXh0ZW5kcyh1ZHQpIDo6IG1v cmUKICAgIGludGVnZXIgOjogc29tZWludGVnZXIgPSAtMjUKICBlbmQgdHlw ZQoKICBpbnRlcmZhY2UgcmVhZChmb3JtYXR0ZWQpCiAgICBtb2R1bGUgcHJv Y2VkdXJlIHVzZXJfZGVmaW5lZF9yZWFkCiAgZW5kIGludGVyZmFjZQoKICBp bnRlcmZhY2Ugd3JpdGUoZm9ybWF0dGVkKQogICAgbW9kdWxlIHByb2NlZHVy ZSB1c2VyX2RlZmluZWRfd3JpdGUKICBlbmQgaW50ZXJmYWNlCgogIGludGVn ZXIgOjogcmVzdWx0X2FycmF5KDE1KQpjb250YWlucwogIHN1YnJvdXRpbmUg dXNlcl9kZWZpbmVkX3JlYWQgKGR0diwgdW5pdCwgaW90eXBlLCB2X2xpc3Qs IGlvc3RhdCwgaW9tc2cpCiAgICBjbGFzcyh1ZHQpLCBpbnRlbnQoaW5vdXQp ICAgOjogZHR2CiAgICBpbnRlZ2VyLCBpbnRlbnQoaW4pICAgICAgICAgOjog dW5pdAogICAgY2hhcmFjdGVyKCopLCBpbnRlbnQoaW4pICAgIDo6IGlvdHlw ZQogICAgaW50ZWdlciwgaW50ZW50KGluKSAgICAgICAgIDo6IHZfbGlzdCAo OikKICAgIGludGVnZXIsIGludGVudChvdXQpICAgICAgICA6OiBpb3N0YXQK ICAgIGNoYXJhY3RlcigqKSwgaW50ZW50KGlub3V0KSA6OiBpb21zZwogICAg Y2hhcmFjdGVyKDEwKSAgICAgICAgICAgICAgIDo6IHR5cGVzdHJpbmcKCiAg ICBpZiAoaW90eXBlPT0nTElTVERJUkVDVEVEJykgdGhlbiAKICAgICAgICAg IHJlYWQgKHVuaXQsIGZtdD0qLCAgaW9zdGF0PWlvc3RhdCwgaW9tc2c9aW9t c2cpIGR0diVteWFycmF5CiAgICBlbHNlCgogICAgaW9tc2cgPSAnU1VDQ0VT UycKICAgIHJlYWQgKHVuaXQsICcoYTYpJywgIGlvc3RhdD1pb3N0YXQsIGlv bXNnPWlvbXNnKSB0eXBlc3RyaW5nCiAgICB0eXBlc3RyaW5nID0gdHJpbSh0 eXBlc3RyaW5nKQogICAgc2VsZWN0IHR5cGUgKHRoaXM9PmR0dikKICAgICAg dHlwZSBpcyAodWR0KQogICAgICAgIGlmICh0eXBlc3RyaW5nLmVxLicgVURU OiAgICAgJykgdGhlbgogICAgICAgICAgcmVhZCAodW5pdCwgZm10PSosICBp b3N0YXQ9aW9zdGF0LCBpb21zZz1pb21zZykgdGhpcyVteWFycmF5CiAgICAg ICAgZWxzZQogICAgICAgICAgaW9zdGF0ID0gNjAwMAogICAgICAgICAgaW9t c2cgPSAnRkFJTFVSRScKICAgICAgICBlbmQgaWYKICAgICAgdHlwZSBpcyAo bW9yZSkKICAgICAgICBpZiAodHlwZXN0cmluZy5lcS4nIE1PUkU6ICAgICcp IHRoZW4KICAgICAgICAgIHJlYWQgKHVuaXQsIGZtdD0qLCAgaW9zdGF0PWlv c3RhdCwgaW9tc2c9aW9tc2cpIHRoaXMlbXlhcnJheSx0aGlzJXNvbWVpbnRl Z2VyCiAgICAgICAgZWxzZQogICAgICAgICAgaW9zdGF0ID0gNjAwMAogICAg ICAgICAgaW9tc2cgPSAnRkFJTFVSRXdoYXQnCiAgICAgICAgZW5kIGlmCiAg ICBlbmQgc2VsZWN0CiAgICBlbmRpZgogIGVuZCBzdWJyb3V0aW5lIHVzZXJf ZGVmaW5lZF9yZWFkCgogIHN1YnJvdXRpbmUgdXNlcl9kZWZpbmVkX3dyaXRl IChkdHYsIHVuaXQsIGlvdHlwZSwgdl9saXN0LCBpb3N0YXQsIGlvbXNnKQog ICAgY2xhc3ModWR0KSwgaW50ZW50KGluKSAgICAgIDo6IGR0dgogICAgaW50 ZWdlciwgaW50ZW50KGluKSAgICAgICAgIDo6IHVuaXQKICAgIGNoYXJhY3Rl cigqKSwgaW50ZW50KGluKSAgICA6OiBpb3R5cGUKICAgIGludGVnZXIsIGlu dGVudChpbikgICAgICAgICA6OiB2X2xpc3QgKDopCiAgICBpbnRlZ2VyLCBp bnRlbnQob3V0KSAgICAgICAgOjogaW9zdGF0CiAgICBjaGFyYWN0ZXIoKiks IGludGVudChpbm91dCkgOjogaW9tc2cKICAgIGNoYXJhY3RlcigxMCkgICAg ICAgICAgICAgICA6OiB0eXBlc3RyaW5nCiAgICBzZWxlY3QgdHlwZSAoZHR2 KQogICAgICB0eXBlIGlzICh1ZHQpCiAgICAgICAgd3JpdGUgKHVuaXQsIGZt dD0qLCBpb3N0YXQ9aW9zdGF0LCBpb21zZz1pb21zZykgICJVRFQ6ICAiCiAg ICAgICAgd3JpdGUgKHVuaXQsIGZtdD0qLCBpb3N0YXQ9aW9zdGF0LCBpb21z Zz1pb21zZykgIGR0diVteWFycmF5CiAgICAgIHR5cGUgaXMgKG1vcmUpCiAg ICAgICAgd3JpdGUgKHVuaXQsIGZtdD0qLCBpb3N0YXQ9aW9zdGF0LCBpb21z Zz1pb21zZykgICJNT1JFOiAiCiAgICAgICAgd3JpdGUgKHVuaXQsIGZtdD0q LCBpb3N0YXQ9aW9zdGF0LCBpb21zZz1pb21zZykgIGR0diVteWFycmF5LGR0 diVzb21laW50ZWdlcgogICAgZW5kIHNlbGVjdAogICAgd3JpdGUgKHVuaXQs KikKICBlbmQgc3Vicm91dGluZSB1c2VyX2RlZmluZWRfd3JpdGUKZW5kICBt b2R1bGUgdXNlcnR5cGVzCgpwcm9ncmFtIHRlc3QxCiAgdXNlIHVzZXJ0eXBl cwogIHR5cGUgKHVkdCkgOjogdWR0MQogIHR5cGUgKG1vcmUpLCBzYXZlIDo6 IG1vcmUxCiAgY2xhc3MgKG1vcmUpLCBhbGxvY2F0YWJsZSA6OiBzb21lbW9y ZQogIGludGVnZXIgIDo6IHRoZXNpemUsIGksIGlvcwogIGNoYXJhY3Rlcigy NSk6OiBpb21zZwoKISBDcmVhdGUgYSBmaWxlIHRoYXQgY29udGFpbnMgc29t ZSBkYXRhIGZvciB0ZXN0aW5nLgogIG9wZW4gKDEwLCBmb3JtPSdmb3JtYXR0 ZWQnLCBzdGF0dXM9J3NjcmF0Y2gnLCBhY3Rpb249J3JlYWR3cml0ZScpCiAg d3JpdGUoMTAsICcoYSknKSAnIFVEVDogJwogIGRvIGkgPSAxLCAxNQogICAg d3JpdGUoMTAsJyhpNSknLCBhZHZhbmNlPSdubycpIGkKICBlbmQgZG8KICB3 cml0ZSgxMCwqKQogIHJld2luZCgxMCkKICB1ZHQxJW15YXJyYXkgPSA5OQog IHJlc3VsdF9hcnJheSA9ICgvIChpLCBpID0gMSwgMTUpIC8pCiAgbW9yZTEl bXlhcnJheSA9IHJlc3VsdF9hcnJheQohICByZWFkICgxMCwgZm10PScoZHQp JywgYWR2YW5jZT0nbm8nLCBpb21zZz1pb21zZywgaW9zdGF0PWlvcykgdWR0 MQogIGNhbGwgdXNlcl9kZWZpbmVkX3JlYWQodWR0MSwxMCwnZHQnLFsxXSxp b21zZz1pb21zZyxpb3N0YXQ9aW9zKQogIGlmIChpb21zZy5uZS4nU1VDQ0VT UycpIHRoZW4gCiAgICAgICAgICBwcmludCAqLCAnaW9tc2c9Jyx0cmltKGlv bXNnKQogICAgICAgICAgcHJpbnQgKiwgJ2lvcz0nLGlvcwogICAgICAgICAg U1RPUCAxCiAgZWxzZWlmIChhbnkoLm5vdC51ZHQxJW15YXJyYXk9PXJlc3Vs dF9hcnJheSkpIHRoZW4gCiAgICAgICBwcmludCAqLCB1ZHQxJW15YXJyYXku bmUucmVzdWx0X2FycmF5CiAgICAgICBwcmludCAqLCAnbXlhcnJheT0nLHVk dDElbXlhcnJheQogICAgICAgcHJpbnQgKiwgJ3Jlc3VsdCA9JyxyZXN1bHRf YXJyYXkKICAgICAgIHByaW50ICosICdzaXplcz0nLHNpemUodWR0MSVteWFy cmF5KSxzaXplKHJlc3VsdF9hcnJheSksJyBpb3N0YXQ9Jyxpb3MgICAKICAg ICAgIFNUT1AgMgogIGVuZGlmCiAgY2xvc2UoMTApCiAgb3BlbiAoMTAsIGZv cm09J2Zvcm1hdHRlZCcsIHN0YXR1cz0nc2NyYXRjaCcpCiAgd3JpdGUgKDEw LCAnKGR0KScpIG1vcmUxCiAgcmV3aW5kKDEwKQogIG1vcmUxJW15YXJyYXkg PSA5OQogIHJlYWQgKDEwLCAnKGR0KScsIGlvc3RhdD1pb3MsIGlvbXNnPWlv bXNnKSBtb3JlMQogIGlmIChpb21zZy5uZS4nU1VDQ0VTUycpIFNUT1AgMwog IGlmIChhbnkobW9yZTElbXlhcnJheS5uZS5yZXN1bHRfYXJyYXkpKSBTVE9Q IDQKICBjbG9zZSAoMTApCiAgc3RvcCAwCmVuZCBwcm9ncmFtIHRlc3QxCg== --00000000000050997f05efdd50cd--