From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by sourceware.org (Postfix) with ESMTPS id 2CABD3857820; Fri, 25 Sep 2020 15:50:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2CABD3857820 Received: by mail-lf1-x12a.google.com with SMTP id b12so3319461lfp.9; Fri, 25 Sep 2020 08:50:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=41hdL0OXkZ8589ftOOYGXQXR4GlkLWlfNjtSb9R2fxY=; b=LKGSpd5i9KenR1cFdVgPJDdEqE6IPVJiluRm6yYoOa85bkrbi2DAaWxM3bYteW9tP+ cMmJLwLBUMOreJxgryJTOgR4OGn6bXC4RDi2m3d9TAx9RURxdwWYXuIaKI46Ok5tmxhk CSFqFfxTNQPaiV3KmZUWwFvxfuzlxT5AzWBNvR6FWpljuw5DYoXOaLsLAt0LS+GVuk5e 39O5ZyMzDeH0FPBB+2rmxqYy8ISz+q3V+/M0HGLmiE6G9bHZlGN+xUlub3ksSLm4x2sq /1DHqrx7hQKqNoHzXDG4VG5Zv5/nXZbs8QapE5Ot6rgzdYot3Vwt8+HNnYmB96/KhUQm jIOQ== X-Gm-Message-State: AOAM532EsOj1bfUEmTZQruFOx7LTnR7kYBKmaO03RZBJvQl1gM8FUepv nknFJE2ZDeVf3sV4mIssgI0dIZQyM7RkMVSa0Y7TWm6IBQ4= X-Google-Smtp-Source: ABdhPJze1KbwIE50a9YxMxosRtXmmjVLPUidrSk9xBcmDvJaW4Eqr8h4pA/U34etKAhydFNLGBc6rqkAO05jbk5/kdI= X-Received: by 2002:ac2:43a2:: with SMTP id t2mr293934lfl.421.1601049053482; Fri, 25 Sep 2020 08:50:53 -0700 (PDT) MIME-Version: 1.0 From: Paul Richard Thomas Date: Fri, 25 Sep 2020 16:50:42 +0100 Message-ID: Subject: [Patch, fortran] PR/97045 A wrong column is selected when addressing individual elements of unlimited polymorphic dummy argument To: "fortran@gcc.gnu.org" , gcc-patches Cc: "Gayday, Igor" Content-Type: multipart/mixed; boundary="00000000000019e54905b025481d" X-Spam-Status: No, score=-8.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Sep 2020 15:50:57 -0000 --00000000000019e54905b025481d Content-Type: text/plain; charset="UTF-8" Hi All, The original testcase turned out to be relatively easy to fix - the chunks in trans-expr.c and trans-stmt.c do this. However, I tested character actual arguments to 'write_array' in the testcase and found that the _len component of the unlimited polymorphic dummy was not being used for the selector and so the payloads were being treated as if they were character(len = 1). The fix for this part of the problem further complicates the building of array references. It looks to me as if rationalizing this part of the trans-* part of gfortran is quite a significant TODO, since it is now little more than bandaid on sticking plaster! I will flag this up in a new PR. Regtests on FC31/x86_64 - OK for master? Paul This patch fixes PR97045 - unlimited polymorphic array element selectors. 2020-25-09 Paul Thomas gcc/fortran PR fortran/97045 * trans-array.c (gfc_conv_array_ref): Make sure that the class decl is passed to build_array_ref in the case of unlimited polymorphic entities. * trans-expr.c (gfc_conv_derived_to_class): Ensure that array refs do not preceed the _len component. Free the _len expr. * trans-stmt.c (trans_associate_var): Reset 'need_len_assign' for polymorphic scalars. * trans.c (gfc_build_array_ref): When the vptr size is used for span, multiply by the _len field of unlimited polymorphic entities, when non-zero. gcc/testsuite/ PR fortran/97045 * gfortran.dg/select_type_50.f90 : New test. --00000000000019e54905b025481d Content-Type: text/x-patch; charset="US-ASCII"; name="submit.diff" Content-Disposition: attachment; filename="submit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfieqy8i0 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmMgYi9nY2MvZm9ydHJhbi90cmFu cy1hcnJheS5jCmluZGV4IDY1NjZjNDdkNGFlLi45OThkNGQ0ZWQ5YiAxMDA2NDQKLS0tIGEvZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jCkBA IC0zNzg3LDcgKzM3ODcsMjAgQEAgZ2ZjX2NvbnZfYXJyYXlfcmVmIChnZmNfc2UgKiBzZSwgZ2Zj X2FycmF5X3JlZiAqIGFyLCBnZmNfZXhwciAqZXhwciwKIAlkZWNsID0gc3ltLT5iYWNrZW5kX2Rl Y2w7CiAgICAgfQogICBlbHNlIGlmIChzeW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1MpCi0gICAgZGVj bCA9IE5VTExfVFJFRTsKKyAgICB7CisgICAgICBpZiAoVU5MSU1JVEVEX1BPTFkgKHN5bSkpCisJ eworCSAgZ2ZjX2V4cHIgKmNsYXNzX2V4cHIgPSBnZmNfZmluZF9hbmRfY3V0X2F0X2xhc3RfY2xh c3NfcmVmIChleHByKTsKKwkgIGdmY19pbml0X3NlICgmdG1wc2UsIE5VTEwpOworCSAgZ2ZjX2Nv bnZfZXhwciAoJnRtcHNlLCBjbGFzc19leHByKTsKKwkgIGlmICghc2UtPmNsYXNzX3ZwdHIpCisJ ICAgIHNlLT5jbGFzc192cHRyID0gZ2ZjX2NsYXNzX3ZwdHJfZ2V0ICh0bXBzZS5leHByKTsKKwkg IGdmY19mcmVlX2V4cHIgKGNsYXNzX2V4cHIpOworCSAgZGVjbCA9IHRtcHNlLmV4cHI7CisJfQor ICAgICAgZWxzZQorCWRlY2wgPSBOVUxMX1RSRUU7CisgICAgfQogCiAgIHNlLT5leHByID0gYnVp bGRfYXJyYXlfcmVmIChzZS0+ZXhwciwgb2Zmc2V0LCBkZWNsLCBzZS0+Y2xhc3NfdnB0cik7CiB9 CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1leHByLmMgYi9nY2MvZm9ydHJhbi90cmFu cy1leHByLmMKaW5kZXggYTY5MDgzOWY1OTEuLjJjMzFlYzliZjAxIDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi90cmFucy1leHByLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jCkBAIC03 MjgsNyArNzI4LDcgQEAgZ2ZjX2NvbnZfZGVyaXZlZF90b19jbGFzcyAoZ2ZjX3NlICpwYXJtc2Us IGdmY19leHByICplLAogCSAgZ2ZjX2V4cHIgKmxlbjsKIAkgIGdmY19zZSBzZTsKIAotCSAgbGVu ID0gZ2ZjX2NvcHlfZXhwciAoZSk7CisJICBsZW4gPSBnZmNfZmluZF9hbmRfY3V0X2F0X2xhc3Rf Y2xhc3NfcmVmIChlKTsKIAkgIGdmY19hZGRfbGVuX2NvbXBvbmVudCAobGVuKTsKIAkgIGdmY19p bml0X3NlICgmc2UsIE5VTEwpOwogCSAgZ2ZjX2NvbnZfZXhwciAoJnNlLCBsZW4pOwpAQCAtNzM5 LDYgKzczOSw3IEBAIGdmY19jb252X2Rlcml2ZWRfdG9fY2xhc3MgKGdmY19zZSAqcGFybXNlLCBn ZmNfZXhwciAqZSwKIAkJCQkJICAgIGludGVnZXJfemVyb19ub2RlKSk7CiAJICBlbHNlCiAJICAg IHRtcCA9IHNlLmV4cHI7CisJICBnZmNfZnJlZV9leHByIChsZW4pOwogCX0KICAgICAgIGVsc2UK IAl0bXAgPSBpbnRlZ2VyX3plcm9fbm9kZTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5z LXN0bXQuYyBiL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuYwppbmRleCAzODlmZWM3MjI3ZS4uYWRj NmI4ZmVmYjUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuYworKysgYi9nY2Mv Zm9ydHJhbi90cmFucy1zdG10LmMKQEAgLTIwOTEsNiArMjA5MSw3IEBAIHRyYW5zX2Fzc29jaWF0 ZV92YXIgKGdmY19zeW1ib2wgKnN5bSwgZ2ZjX3dyYXBwZWRfYmxvY2sgKmJsb2NrKQogCSAgLyog T2J0YWluIGEgdGVtcG9yYXJ5IGNsYXNzIGNvbnRhaW5lciBmb3IgdGhlIHJlc3VsdC4gICovCiAJ ICBnZmNfY29udl9kZXJpdmVkX3RvX2NsYXNzICgmc2UsIGUsIHN5bS0+dHMsIHRtcCwgZmFsc2Us IGZhbHNlKTsKIAkgIHNlLmV4cHIgPSBidWlsZF9mb2xkX2luZGlyZWN0X3JlZl9sb2MgKGlucHV0 X2xvY2F0aW9uLCBzZS5leHByKTsKKwkgIG5lZWRfbGVuX2Fzc2lnbiA9IGZhbHNlOwogCX0KICAg ICAgIGVsc2UKIAl7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy5jIGIvZ2NjL2ZvcnRy YW4vdHJhbnMuYwppbmRleCBlZDA1NDI2MTQ1Mi4uOGNhYTYyNWFiMGUgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL3RyYW5zLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuYwpAQCAtNDI5LDcgKzQy OSwyOCBAQCBnZmNfYnVpbGRfYXJyYXlfcmVmICh0cmVlIGJhc2UsIHRyZWUgb2Zmc2V0LCB0cmVl IGRlY2wsIHRyZWUgdnB0cikKICAgLyogSWYgZGVjbCBvciB2cHRyIGFyZSBub24tbnVsbCwgcG9p bnRlciBhcml0aG1ldGljIGZvciB0aGUgYXJyYXkgcmVmZXJlbmNlCiAgICAgIGlzIGxpa2VseS4g R2VuZXJhdGUgdGhlICdzcGFuJyBmb3IgdGhlIGFycmF5IHJlZmVyZW5jZS4gICovCiAgIGlmICh2 cHRyKQotICAgIHNwYW4gPSBnZmNfdnB0cl9zaXplX2dldCAodnB0cik7CisgICAgeworICAgICAg c3BhbiA9IGdmY192cHRyX3NpemVfZ2V0ICh2cHRyKTsKKworICAgICAgLyogQ2hlY2sgaWYgdGhp cyBpcyBhbiB1bmxpbWl0ZWQgcG9seW1vcnBoaWMgb2JqZWN0IGNhcnJ5aW5nIGEgY2hhcmFjdGVy CisJIHBheWxvYWQuIEluIHRoaXMgY2FzZSwgdGhlICdsZW4nIGZpZWxkIGlzIG5vbi16ZXJvLiAg Ki8KKyAgICAgIGlmIChkZWNsICYmIEdGQ19DTEFTU19UWVBFX1AgKFRSRUVfVFlQRSAoZGVjbCkp KQorCXsKKwkgIHRtcCA9IGdmY19jbGFzc19sZW5fb3JfemVyb19nZXQgKGRlY2wpOworCSAgaWYg KCFpbnRlZ2VyX3plcm9wICh0bXApKQorCSAgICB7CisJICAgICAgdHJlZSBjb25kOworCSAgICAg IHRyZWUgc3R5cGUgPSBUUkVFX1RZUEUgKHNwYW4pOworCSAgICAgIHRtcCA9IGZvbGRfY29udmVy dCAoc3R5cGUsIHRtcCk7CisJICAgICAgY29uZCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9j YXRpb24sIEVRX0VYUFIsCisJCQkJICAgICAgbG9naWNhbF90eXBlX25vZGUsIHRtcCwKKwkJCQkg ICAgICBidWlsZF9pbnRfY3N0IChzdHlwZSwgMCkpOworCSAgICAgIHRtcCA9IGZvbGRfYnVpbGQy IChNVUxUX0VYUFIsIHN0eXBlLCBzcGFuLCB0bXApOworCSAgICAgIHNwYW4gPSBmb2xkX2J1aWxk M19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIsIHN0eXBlLAorCQkJCSAgICAgIGNvbmQs IHNwYW4sIHRtcCk7CisJICAgIH0KKwl9CisgICAgfQogICBlbHNlIGlmIChkZWNsKQogICAgIHNw YW4gPSBnZXRfYXJyYXlfc3BhbiAodHlwZSwgZGVjbCk7CiAK --00000000000019e54905b025481d Content-Type: text/x-fortran; charset="US-ASCII"; name="select_type_50.f90" Content-Disposition: attachment; filename="select_type_50.f90" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfiet4bg1 ISB7IGRnLWRvIHJ1biB9CiEKISBUZXN0IHRoZSBmaXggZm9yIFBSOTcwNDUuIFRoZSByZXBvcnQg d2FzIGZvciB0aGUgSU5URUdFUiB2ZXJzaW9uLiBUZXN0aW5nCiEgcmV2ZWFsZWQgYSBmdXJ0aGVy IGJ1ZyB3aXRoIHRoZSBjaGFyYWN0ZXIgdmVyc2lvbnMuCiEKISBDb250cmlidXRlZCBieSBJZ29y IEdheWRheSAgPGlnb3IuZ2F5ZGF5QG11LmVkdT4KIQpwcm9ncmFtIHRlc3RfcHJnCiAgaW1wbGlj aXQgbm9uZQogIGludGVnZXIgOjogaQogIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGFycig6LCA6 KQogIGNoYXJhY3RlcihraW5kID0gMSwgbGVuID0gMiksIGFsbG9jYXRhYmxlIDo6IGNocig6LCA6 KQogIGNoYXJhY3RlcihraW5kID0gNCwgbGVuID0gMiksIGFsbG9jYXRhYmxlIDo6IGNocjQoOiwg OikKCiAgYXJyID0gcmVzaGFwZSAoWyhpLCBpID0gMSwgOSldLCBbMywgM10pCiAgZG8gaSA9IDEs IDMKICAgIGNhbGwgd3JpdGVfYXJyYXkoYXJyKDE6MiwgaSksIGkpCiAgZW5kIGRvCgogIGNociA9 IHJlc2hhcGUoWyhjaGFyIChpKS8vY2hhciAoaSsxKSwgaSA9IDY1LCA4MywgMildLCBbMywgM10p CiAgZG8gaSA9IDEsIDMKICAgIGNhbGwgd3JpdGVfYXJyYXkgKGNocigxOjIsIGkpLCBpKQogIGVu ZCBkbwoKICBjaHI0ID0gcmVzaGFwZShbKGNoYXIgKGksIGtpbmQgPSA0KS8vY2hhciAoaSsxLCBr aW5kID0gNCksIGkgPSA2NSwgODMsIDIpXSwgJgogICAgICAgICAgICAgICAgIFszLCAzXSkKICBk byBpID0gMSwgMwogICAgY2FsbCB3cml0ZV9hcnJheSAoY2hyNCgxOjIsIGkpLCBpKQogIGVuZCBk bwoKY29udGFpbnMKCiAgc3Vicm91dGluZSB3cml0ZV9hcnJheShhcnJheSwgaikKICAgIGNsYXNz KCopLCBpbnRlbnQoaW4pIDo6IGFycmF5KDopCiAgICBpbnRlZ2VyIDo6IGkgPSAyCiAgICBpbnRl Z2VyIDo6IGosIGsKCiAgICBzZWxlY3QgdHlwZSAoZWxlbSA9PiBhcnJheShpKSkKICAgICAgdHlw ZSBpcyAoaW50ZWdlcikKICAgICAgICBrID0gMyooai0xKStpCiAgICAgICAgaWYgKGVsZW0gLm5l LiBrKSBzdG9wIDEKICAgICAgdHlwZSBpcyAoY2hhcmFjdGVyKGtpbmQgPSAxLCBsZW4gPSAqKSkK ICAgICAgICBrID0gNjMgKyAyKigzKihqLTEpK2kpCiAgICAgICAgaWYgKGVsZW0gLm5lLiBjaGFy IChrKS8vY2hhciAoaysxKSkgcHJpbnQgKiwgZWxlbSwgIiAgICIsIGNoYXIgKGspLy9jaGFyIChr KzEpCiAgICAgIHR5cGUgaXMgKGNoYXJhY3RlcihraW5kID0gNCwgbGVuID0gKikpCiAgICAgICAg ayA9IDYzICsgMiooMyooai0xKStpKQogICAgICAgIGlmIChlbGVtIC5uZS4gY2hhciAoaywga2lu ZCA9IDQpLy9jaGFyIChrKzEsIGtpbmQgPSA0KSkgc3RvcCAzCiAgICBlbmQgc2VsZWN0CgogIGVu ZCBzdWJyb3V0aW5lCgplbmQgcHJvZ3JhbQo= --00000000000019e54905b025481d--