From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21711 invoked by alias); 6 Aug 2013 07:40:30 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 21677 invoked by uid 89); 6 Aug 2013 07:40:29 -0000 X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KHOP_THREADED,RCVD_IN_DNSWL_NONE,RCVD_IN_HOSTKARMA_YE,RDNS_NONE,SPF_PASS autolearn=no version=3.3.1 X-Spam-User: qpsmtpd, 2 recipients Received: from Unknown (HELO mail-pd0-f178.google.com) (209.85.192.178) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 06 Aug 2013 07:40:28 +0000 Received: by mail-pd0-f178.google.com with SMTP id w10so53165pde.9 for ; Tue, 06 Aug 2013 00:40:21 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.66.74.65 with SMTP id r1mr1714953pav.81.1375774820967; Tue, 06 Aug 2013 00:40:20 -0700 (PDT) Received: by 10.70.12.2 with HTTP; Tue, 6 Aug 2013 00:40:20 -0700 (PDT) In-Reply-To: <5200232B.9060402@net-b.de> References: <51F3977B.7060606@net-b.de> <5200232B.9060402@net-b.de> Date: Tue, 06 Aug 2013 07:40:00 -0000 Message-ID: Subject: Re: [Patch, Fortran, OOP] PR 57306: ICE on valid with class pointer initialization From: Janus Weil To: Tobias Burnus Cc: gfortran , gcc patches Content-Type: multipart/mixed; boundary=f46d042f931e7eab6904e34289c8 X-Virus-Found: No X-SW-Source: 2013-08/txt/msg00249.txt.bz2 --f46d042f931e7eab6904e34289c8 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2029 Hi, > Sorry for the belated review. > > + bool ptr = sym->attr.pointer || sym->attr.allocatable > + || (sym->ts.type == BT_CLASS > + && CLASS_DATA (sym)->attr.class_pointer); > > > That looks quite imbalanced. Why do you not take care of > CLASS_DATA(sym)->attr.allocatable? Actually, shouldn't that always be true > for BT_CLASS in this context? A BT_CLASS should either be a > pointer/allocatable or a dummy argument - but the latter is never > initialized (while being a dummy). right. Then it should be ok to just check for BT_CLASS. Updated patch attached. > Otherwise, it looks OK to me. Thanks. I will commit the attached version after another regtest. > (Don't forget the dg-do compile -> run change.) Done. > From follow-up emails: >>> >>> type t >>> class(*), pointer :: x >>> end type t >>> type(t), target :: y >>> integer,target :: z >>> type(t) :: x = t(y) >>> type(t) :: x = t(z) >>> class(*), pointer :: a => y >> >> Your example yields (with and without the current patch): >> >> type(t) :: x = t(y) >> 1 >> Error: Can't convert TYPE(t) to CLASS(*) at (1) >> >> In fact the patch does not really handle unlimited polymorphics. I >> suspect several fixes might be needed to get your test case running. >> Is it ok to do this in a follow-up patch? > > > Seems as if there is more work required ... Yes, a follow-up patch is fine, > but somewhere the omission should be recorded. (As you did in PR49213.) > > Talking about the example above, the following is similar and may or may not > be handled: > > integer, target :: tgt > type t2 > end type t2 > type(t2), target :: tgt2 > type t > class(*), pointer :: a => tgt > class(*), pointer :: b => tgt2 > end type t > type(t) :: x > type(t), SAVE :: y > end In addition to the can't-convert error, this one also gives integer, target :: tgt 1 Internal Error at (1): but I don't directly see why. I will also add it to the above PR to keep track of it. Cheers, Janus --f46d042f931e7eab6904e34289c8 Content-Type: application/octet-stream; name="pr57306_v5.diff" Content-Disposition: attachment; filename="pr57306_v5.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hk0srwlg0 Content-length: 6438 SW5kZXg6IGdjYy9mb3J0cmFuL2NsYXNzLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2ZvcnRyYW4vY2xhc3MuYwkocmV2aXNpb24gMjAxNTA0 KQorKysgZ2NjL2ZvcnRyYW4vY2xhc3MuYwkod29ya2luZyBjb3B5KQpAQCAt NDEyLDEyICs0MTIsMTIgQEAgZ2ZjX2lzX2NsYXNzX2NvbnRhaW5lcl9yZWYg KGdmY19leHByICplKQogfQogCiAKLS8qIEJ1aWxkIGEgTlVMTCBpbml0aWFs aXplciBmb3IgQ0xBU1MgcG9pbnRlcnMsCi0gICBpbml0aWFsaXppbmcgdGhl IF9kYXRhIGNvbXBvbmVudCB0byBOVUxMIGFuZAotICAgdGhlIF92cHRyIGNv bXBvbmVudCB0byB0aGUgZGVjbGFyZWQgdHlwZS4gICovCisvKiBCdWlsZCBh biBpbml0aWFsaXplciBmb3IgQ0xBU1MgcG9pbnRlcnMsCisgICBpbml0aWFs aXppbmcgdGhlIF9kYXRhIGNvbXBvbmVudCB0byB0aGUgaW5pdF9leHByIChv ciBOVUxMKSBhbmQgdGhlIF92cHRyCisgICBjb21wb25lbnQgdG8gdGhlIGNv cnJlc3BvbmRpbmcgdHlwZSAob3IgdGhlIGRlY2xhcmVkIHR5cGUsIGdpdmVu IGJ5IHRzKS4gICovCiAKIGdmY19leHByICoKLWdmY19jbGFzc19udWxsX2lu aXRpYWxpemVyIChnZmNfdHlwZXNwZWMgKnRzLCBnZmNfZXhwciAqaW5pdF9l eHByKQorZ2ZjX2NsYXNzX2luaXRpYWxpemVyIChnZmNfdHlwZXNwZWMgKnRz LCBnZmNfZXhwciAqaW5pdF9leHByKQogewogICBnZmNfZXhwciAqaW5pdDsK ICAgZ2ZjX2NvbXBvbmVudCAqY29tcDsKQEAgLTQzMCw2ICs0MzAsOCBAQCBn ZmNfZXhwciAqCiAKICAgaWYgKGlzX3VubGltaXRlZF9wb2x5bW9ycGhpYyAm JiBpbml0X2V4cHIpCiAgICAgdnRhYiA9IGdmY19maW5kX2ludHJpbnNpY192 dGFiICgmdHMtPnUuZGVyaXZlZC0+Y29tcG9uZW50cy0+dHMpOworICBlbHNl IGlmIChpbml0X2V4cHIgJiYgaW5pdF9leHByLT5leHByX3R5cGUgIT0gRVhQ Ul9OVUxMKQorICAgIHZ0YWIgPSBnZmNfZmluZF9kZXJpdmVkX3Z0YWIgKGlu aXRfZXhwci0+dHMudS5kZXJpdmVkKTsKICAgZWxzZQogICAgIHZ0YWIgPSBn ZmNfZmluZF9kZXJpdmVkX3Z0YWIgKHRzLT51LmRlcml2ZWQpOwogCkBAIC00 NDIsNiArNDQ0LDggQEAgZ2ZjX2V4cHIgKgogICAgICAgZ2ZjX2NvbnN0cnVj dG9yICpjdG9yID0gZ2ZjX2NvbnN0cnVjdG9yX2dldCgpOwogICAgICAgaWYg KHN0cmNtcCAoY29tcC0+bmFtZSwgIl92cHRyIikgPT0gMCAmJiB2dGFiKQog CWN0b3ItPmV4cHIgPSBnZmNfbHZhbF9leHByX2Zyb21fc3ltICh2dGFiKTsK KyAgICAgIGVsc2UgaWYgKGluaXRfZXhwciAmJiBpbml0X2V4cHItPmV4cHJf dHlwZSAhPSBFWFBSX05VTEwpCisJICBjdG9yLT5leHByID0gZ2ZjX2NvcHlf ZXhwciAoaW5pdF9leHByKTsKICAgICAgIGVsc2UKIAljdG9yLT5leHByID0g Z2ZjX2dldF9udWxsX2V4cHIgKE5VTEwpOwogICAgICAgZ2ZjX2NvbnN0cnVj dG9yX2FwcGVuZCAoJmluaXQtPnZhbHVlLmNvbnN0cnVjdG9yLCBjdG9yKTsK SW5kZXg6IGdjYy9mb3J0cmFuL2dmb3J0cmFuLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkocmV2aXNpb24g MjAxNTA0KQorKysgZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAkod29ya2luZyBj b3B5KQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgdm9pZCBnZmNfYWRkX2NsYXNz X2FycmF5X3JlZiAoZ2ZjX2V4cHIgKik7CiBib29sIGdmY19pc19jbGFzc19h cnJheV9yZWYgKGdmY19leHByICosIGJvb2wgKik7CiBib29sIGdmY19pc19j bGFzc19zY2FsYXJfZXhwciAoZ2ZjX2V4cHIgKik7CiBib29sIGdmY19pc19j bGFzc19jb250YWluZXJfcmVmIChnZmNfZXhwciAqZSk7Ci1nZmNfZXhwciAq Z2ZjX2NsYXNzX251bGxfaW5pdGlhbGl6ZXIgKGdmY190eXBlc3BlYyAqLCBn ZmNfZXhwciAqKTsKK2dmY19leHByICpnZmNfY2xhc3NfaW5pdGlhbGl6ZXIg KGdmY190eXBlc3BlYyAqLCBnZmNfZXhwciAqKTsKIHVuc2lnbmVkIGludCBn ZmNfaGFzaF92YWx1ZSAoZ2ZjX3N5bWJvbCAqKTsKIGJvb2wgZ2ZjX2J1aWxk X2NsYXNzX3N5bWJvbCAoZ2ZjX3R5cGVzcGVjICosIHN5bWJvbF9hdHRyaWJ1 dGUgKiwKIAkJCQlnZmNfYXJyYXlfc3BlYyAqKiwgYm9vbCk7CkluZGV4OiBn Y2MvZm9ydHJhbi90cmFucy1kZWNsLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCShyZXZpc2lvbiAyMDE1 MDQpCisrKyBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMJKHdvcmtpbmcgY29w eSkKQEAgLTE0OTEsMTQgKzE0OTEsMTQgQEAgZ2ZjX2dldF9zeW1ib2xfZGVj bCAoZ2ZjX3N5bWJvbCAqIHN5bSkKIAkgU0FWRSBpcyBzcGVjaWZpZWQgb3Ro ZXJ3aXNlIHRoZXkgbmVlZCB0byBiZSByZWluaXRpYWxpemVkCiAJIGV2ZXJ5 IHRpbWUgdGhlIHByb2NlZHVyZSBpcyBlbnRlcmVkLiBUaGUgVFJFRV9TVEFU SUMgaXMKIAkgaW4gdGhpcyBjYXNlIGR1ZSB0byAtZm1heC1zdGFjay12YXIt c2l6ZT0uICAqLworCiAgICAgICBERUNMX0lOSVRJQUwgKGRlY2wpID0gZ2Zj X2NvbnZfaW5pdGlhbGl6ZXIgKHN5bS0+dmFsdWUsICZzeW0tPnRzLAotCQkJ CQkJICBUUkVFX1RZUEUgKGRlY2wpLAotCQkJCQkJICBzeW0tPmF0dHIuZGlt ZW5zaW9uCi0JCQkJCQkgIHx8IChzeW0tPmF0dHIuY29kaW1lbnNpb24KLQkJ CQkJCSAgICAgICYmIHN5bS0+YXR0ci5hbGxvY2F0YWJsZSksCi0JCQkJCQkg IHN5bS0+YXR0ci5wb2ludGVyCi0JCQkJCQkgIHx8IHN5bS0+YXR0ci5hbGxv Y2F0YWJsZSwKLQkJCQkJCSAgc3ltLT5hdHRyLnByb2NfcG9pbnRlcik7CisJ CQkJICAgIFRSRUVfVFlQRSAoZGVjbCksIHN5bS0+YXR0ci5kaW1lbnNpb24K KwkJCQkgICAgfHwgKHN5bS0+YXR0ci5jb2RpbWVuc2lvbgorCQkJCQkmJiBz eW0tPmF0dHIuYWxsb2NhdGFibGUpLAorCQkJCSAgICBzeW0tPmF0dHIucG9p bnRlciB8fCBzeW0tPmF0dHIuYWxsb2NhdGFibGUKKwkJCQkgICAgfHwgc3lt LT50cy50eXBlID09IEJUX0NMQVNTLAorCQkJCSAgICBzeW0tPmF0dHIucHJv Y19wb2ludGVyKTsKICAgICB9CiAKICAgaWYgKCFUUkVFX1NUQVRJQyAoZGVj bCkKSW5kZXg6IGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1leHByLmMJKHJl dmlzaW9uIDIwMTUwNCkKKysrIGdjYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwko d29ya2luZyBjb3B5KQpAQCAtNTY2NCw3ICs1NjY0LDE1IEBAIGdmY19jb252 X2luaXRpYWxpemVyIChnZmNfZXhwciAqIGV4cHIsIGdmY190eXBlc3BlCiAg ICAgfQogICBlbHNlIGlmIChwb2ludGVyIHx8IHByb2NwdHIpCiAgICAgewot ICAgICAgaWYgKCFleHByIHx8IGV4cHItPmV4cHJfdHlwZSA9PSBFWFBSX05V TEwpCisgICAgICBpZiAodHMtPnR5cGUgPT0gQlRfQ0xBU1MgJiYgIXByb2Nw dHIpCisJeworCSAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisJICBnZmNf Y29udl9zdHJ1Y3R1cmUgKCZzZSwgZ2ZjX2NsYXNzX2luaXRpYWxpemVyICh0 cywgZXhwciksIDEpOworCSAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChzZS5l eHByKSA9PSBDT05TVFJVQ1RPUik7CisJICBUUkVFX1NUQVRJQyAoc2UuZXhw cikgPSAxOworCSAgcmV0dXJuIHNlLmV4cHI7CisJfQorICAgICAgZWxzZSBp ZiAoIWV4cHIgfHwgZXhwci0+ZXhwcl90eXBlID09IEVYUFJfTlVMTCkKIAly ZXR1cm4gZm9sZF9jb252ZXJ0ICh0eXBlLCBudWxsX3BvaW50ZXJfbm9kZSk7 CiAgICAgICBlbHNlCiAJewpAQCAtNTY4Myw3ICs1NjkxLDcgQEAgZ2ZjX2Nv bnZfaW5pdGlhbGl6ZXIgKGdmY19leHByICogZXhwciwgZ2ZjX3R5cGVzcGUK IAljYXNlIEJUX0NMQVNTOgogCSAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7 CiAJICBpZiAodHMtPnR5cGUgPT0gQlRfQ0xBU1MgJiYgZXhwci0+ZXhwcl90 eXBlID09IEVYUFJfTlVMTCkKLQkgICAgZ2ZjX2NvbnZfc3RydWN0dXJlICgm c2UsIGdmY19jbGFzc19udWxsX2luaXRpYWxpemVyKHRzLCBleHByKSwgMSk7 CisJICAgIGdmY19jb252X3N0cnVjdHVyZSAoJnNlLCBnZmNfY2xhc3NfaW5p dGlhbGl6ZXIgKHRzLCBleHByKSwgMSk7CiAJICBlbHNlCiAJICAgIGdmY19j b252X3N0cnVjdHVyZSAoJnNlLCBleHByLCAxKTsKIAkgIGdjY19hc3NlcnQg KFRSRUVfQ09ERSAoc2UuZXhwcikgPT0gQ09OU1RSVUNUT1IpOwpAQCAtNTk5 Myw3ICs2MDAxLDcgQEAgZ2ZjX3RyYW5zX3N1YmNvbXBvbmVudF9hc3NpZ24g KHRyZWUgZGVzdCwgZ2ZjX2NvbXAKICAgICB7CiAgICAgICAvKiBOVUxMIGlu aXRpYWxpemF0aW9uIGZvciBDTEFTUyBjb21wb25lbnRzLiAgKi8KICAgICAg IHRtcCA9IGdmY190cmFuc19zdHJ1Y3R1cmVfYXNzaWduIChkZXN0LAotCQkJ CQlnZmNfY2xhc3NfbnVsbF9pbml0aWFsaXplciAoJmNtLT50cywgZXhwcikp OworCQkJCQlnZmNfY2xhc3NfaW5pdGlhbGl6ZXIgKCZjbS0+dHMsIGV4cHIp KTsKICAgICAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJmJsb2NrLCB0bXAp OwogICAgIH0KICAgZWxzZSBpZiAoY20tPmF0dHIuZGltZW5zaW9uICYmICFj bS0+YXR0ci5wcm9jX3BvaW50ZXIpCg== --f46d042f931e7eab6904e34289c8 Content-Type: application/octet-stream; name="pointer_init_8.f90" Content-Disposition: attachment; filename="pointer_init_8.f90" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hk0ssc841 Content-length: 773 ISB7IGRnLWRvIHJ1biB9CiEKISBQUiA1NzMwNjogW09PUF0gSUNFIG9uIHZh bGlkIHdpdGggY2xhc3MgcG9pbnRlciBpbml0aWFsaXphdGlvbgohCiEgQ29u dHJpYnV0ZWQgYnkgQW5kcmV3IEJlbnNvbiA8YWJlbnNvbmNhQGdtYWlsLmNv bT4KCm1vZHVsZSBtCiAgdHlwZSA6OiBjCiAgZW5kIHR5cGUgYwogIHR5cGUs IGV4dGVuZHMoYykgOjogZAogIGVuZCB0eXBlIGQKICB0eXBlKGMpLCB0YXJn ZXQgOjogeAogIHR5cGUoZCksIHRhcmdldCA6OiB5CmVuZCBtb2R1bGUgbQoK IHVzZSBtCiAgY2xhc3MoYyksIHBvaW50ZXIgOjogcHggPT4geAogIGNsYXNz KGMpLCBwb2ludGVyIDo6IHB5ID0+IHkKCiAgaWYgKC5ub3QuIGFzc29jaWF0 ZWQocHgsIHgpKSAgIGNhbGwgYWJvcnQoKQogIGlmICgubm90LiBzYW1lX3R5 cGVfYXMocHgsIHgpKSBjYWxsIGFib3J0KCkKICBpZiAoLm5vdC4gYXNzb2Np YXRlZChweSwgeSkpICAgY2FsbCBhYm9ydCgpCiAgaWYgKC5ub3QuIHNhbWVf dHlwZV9hcyhweSwgeSkpIGNhbGwgYWJvcnQoKQplbmQgCgohIHsgZGctZmlu YWwgeyBjbGVhbnVwLW1vZHVsZXMgIm0iIH0gfQo= --f46d042f931e7eab6904e34289c8--