From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16132 invoked by alias); 23 May 2012 20:38:58 -0000 Received: (qmail 16008 invoked by uid 22791); 23 May 2012 20:38:57 -0000 X-SWARE-Spam-Status: No, hits=-5.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-qa0-f47.google.com (HELO mail-qa0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 23 May 2012 20:38:42 +0000 Received: by qabg1 with SMTP id g1so3746793qab.20 for ; Wed, 23 May 2012 13:38:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.112.15 with SMTP id u15mr5521347qcp.55.1337805521675; Wed, 23 May 2012 13:38:41 -0700 (PDT) Received: by 10.229.50.140 with HTTP; Wed, 23 May 2012 13:38:41 -0700 (PDT) In-Reply-To: <4FA7DF23.7060005@redhat.com> References: <4F4D410A.4090409@redhat.com> <4F4E3C66.2000500@redhat.com> <4FA7DF23.7060005@redhat.com> Date: Wed, 23 May 2012 20:38:00 -0000 Message-ID: Subject: Re: [C++ Patch] for c++/51214 From: =?ISO-8859-1?Q?Fabien_Ch=EAne?= To: Jason Merrill Cc: GCC Patches Content-Type: multipart/mixed; boundary=00235447104ce5e70c04c0ba1ea2 X-IsSubscribed: yes 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 X-SW-Source: 2012-05/txt/msg01578.txt.bz2 --00235447104ce5e70c04c0ba1ea2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1216 2012/5/7 Jason Merrill : > On 05/06/2012 04:06 PM, Fabien Ch=EAne wrote: >> >> + =A0 =A0 =A0if (late_enum_values) >> + =A0 =A0 =A0 =A0 =A0VEC_safe_push (tree, gc, late_enum_values, decl); > > I would think you could walk the TYPE_VALUES list directly, rather than c= opy > it into a temporary VEC. Indeed, let's use good old tree lists. Tested x86_64-unknown-linux-gnu, OK for trunk and 4.7 ? gcc/testsuite/ChangeLog 2012-05-23 Fabien Ch=EAne PR c++/51214 * g++.dg/cpp0x/forw_enum11.C: New. gcc/cp/ChangeLog 2012-05-23 Fabien Ch=EAne PR c++/51214 * cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields): Declare. * class.c (insert_into_classtype_sorted_fields): New. (add_enum_fields_to_record_type): New. (count_fields): Adjust the comment. (add_fields_to_record_type): Likewise. (finish_struct_1): Move the code that inserts the fields for the sorted case, into insert_into_classtype_sorted_fields, and call it. (insert_late_enum_def_into_classtype_sorted_fields): Define. * decl.c (finish_enum_value_list): Call insert_late_enum_def_into_classtype_sorted_fields if a late enum definition is encountered. --=20 Fabien --00235447104ce5e70c04c0ba1ea2 Content-Type: application/octet-stream; name="51214.patch" Content-Disposition: attachment; filename="51214.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h2kuuj520 Content-length: 8923 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2ZvcndfZW51bTEx LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMHgvZm9yd19lbnVtMTEuQwkocmV2aXNpb24gMCkKKysrIGdj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2ZvcndfZW51bTExLkMJKHJldmlz aW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy8vIHsgZGctZG8gY29tcGlsZSB7 IHRhcmdldCBjKysxMSB9IH0KKworZW51bSB7IEEgPSAxIH07CitzdHJ1Y3Qg VAoreworICBpbnQgaTEsIGkyLCBpMywgaTQsIGk1LCBpNiwgaTc7CisgIGVu dW0gRTIgOiBpbnQ7CisKKyAgdm9pZCBmKCk7Cit9OworCitlbnVtIFQ6OkUy IDogaW50IHsgQTEgPSBBLCBBMiA9IDIzIH07CisKK3N0YXRpY19hc3NlcnQo aW50KFQ6OkExKSA9PSAxLCAiZXJyb3IiKTsKK3N0YXRpY19hc3NlcnQoaW50 KFQ6OkEyKSA9PSAyMywgImVycm9yIik7CisKK3ZvaWQgVDo6ZigpCit7Cisg IHN0YXRpY19hc3NlcnQoaW50KFQ6OkExKSA9PSAxLCAiZXJyb3IiKTsKKyAg c3RhdGljX2Fzc2VydChpbnQoVDo6QTIpID09IDIzLCAiZXJyb3IiKTsKKyAg c3RhdGljX2Fzc2VydChpbnQoQTEpID09IDEsICJlcnJvciIpOworICBzdGF0 aWNfYXNzZXJ0KGludChBMikgPT0gMjMsICJlcnJvciIpOworfQpJbmRleDog Z2NjL2NwL2NsYXNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L2NwL2NsYXNzLmMJKHJldmlzaW9uIDE4NjY3NCkKKysrIGdjYy9jcC9jbGFz cy5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgc3RhdGlj IHZvaWQgYnVpbGRfdnRibF9pbml0aWFsaXplciAodHJlZQogCQkJCSAgICBW RUMoY29uc3RydWN0b3JfZWx0LGdjKSAqKik7CiBzdGF0aWMgaW50IGNvdW50 X2ZpZWxkcyAodHJlZSk7CiBzdGF0aWMgaW50IGFkZF9maWVsZHNfdG9fcmVj b3JkX3R5cGUgKHRyZWUsIHN0cnVjdCBzb3J0ZWRfZmllbGRzX3R5cGUqLCBp bnQpOworc3RhdGljIHZvaWQgaW5zZXJ0X2ludG9fY2xhc3N0eXBlX3NvcnRl ZF9maWVsZHMgKHRyZWUsIHRyZWUsIGludCk7CiBzdGF0aWMgYm9vbCBjaGVj a19iaXRmaWVsZF9kZWNsICh0cmVlKTsKIHN0YXRpYyB2b2lkIGNoZWNrX2Zp ZWxkX2RlY2wgKHRyZWUsIHRyZWUsIGludCAqLCBpbnQgKiwgaW50ICopOwog c3RhdGljIHZvaWQgY2hlY2tfZmllbGRfZGVjbHMgKHRyZWUsIHRyZWUgKiwg aW50ICosIGludCAqKTsKQEAgLTI4MzIsOCArMjgzMyw5IEBAIGFkZF9pbXBs aWNpdGx5X2RlY2xhcmVkX21lbWJlcnMgKHRyZWUgdCwKICAgZGVjbGFyZV92 aXJ0X2Fzc29wX2FuZF9kdG9yICh0KTsKIH0KIAotLyogU3Vicm91dGluZSBv ZiBmaW5pc2hfc3RydWN0XzEuICBSZWN1cnNpdmVseSBjb3VudCB0aGUgbnVt YmVyIG9mIGZpZWxkcwotICAgaW4gVFlQRSwgaW5jbHVkaW5nIGFub255bW91 cyB1bmlvbiBtZW1iZXJzLiAgKi8KKy8qIFN1YnJvdXRpbmUgb2YgaW5zZXJ0 X2ludG9fY2xhc3N0eXBlX3NvcnRlZF9maWVsZHMuICBSZWN1cnNpdmVseQor ICAgY291bnQgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gVFlQRSwgaW5jbHVk aW5nIGFub255bW91cyB1bmlvbgorICAgbWVtYmVycy4gICovCiAKIHN0YXRp YyBpbnQKIGNvdW50X2ZpZWxkcyAodHJlZSBmaWVsZHMpCkBAIC0yODUwLDgg KzI4NTIsOSBAQCBjb3VudF9maWVsZHMgKHRyZWUgZmllbGRzKQogICByZXR1 cm4gbl9maWVsZHM7CiB9CiAKLS8qIFN1YnJvdXRpbmUgb2YgZmluaXNoX3N0 cnVjdF8xLiAgUmVjdXJzaXZlbHkgYWRkIGFsbCB0aGUgZmllbGRzIGluIHRo ZQotICAgVFJFRV9MSVNUIEZJRUxEUyB0byB0aGUgU09SVEVEX0ZJRUxEU19U WVBFIGVsdHMsIHN0YXJ0aW5nIGF0IG9mZnNldCBJRFguICAqLworLyogU3Vi cm91dGluZSBvZiBpbnNlcnRfaW50b19jbGFzc3R5cGVfc29ydGVkX2ZpZWxk cy4gIFJlY3Vyc2l2ZWx5IGFkZAorICAgYWxsIHRoZSBmaWVsZHMgaW4gdGhl IFRSRUVfTElTVCBGSUVMRFMgdG8gdGhlIFNPUlRFRF9GSUVMRFNfVFlQRQor ICAgZWx0cywgc3RhcnRpbmcgYXQgb2Zmc2V0IElEWC4gICovCiAKIHN0YXRp YyBpbnQKIGFkZF9maWVsZHNfdG9fcmVjb3JkX3R5cGUgKHRyZWUgZmllbGRz LCBzdHJ1Y3Qgc29ydGVkX2ZpZWxkc190eXBlICpmaWVsZF92ZWMsIGludCBp ZHgpCkBAIC0yODY3LDYgKzI4NzAsMjAgQEAgYWRkX2ZpZWxkc190b19yZWNv cmRfdHlwZSAodHJlZSBmaWVsZHMsCiAgIHJldHVybiBpZHg7CiB9CiAKKy8q IEFkZCBhbGwgb2YgdGhlIGVudW0gdmFsdWVzIG9mIEVOVU1UWVBFLCB0byB0 aGUgRklFTERfVkVDIGVsdHMsCisgICBzdGFydGluZyBhdCBvZmZzZXQgSURY LiAgKi8KKworc3RhdGljIGludAorYWRkX2VudW1fZmllbGRzX3RvX3JlY29y ZF90eXBlICh0cmVlIGVudW10eXBlLAorCQkJCXN0cnVjdCBzb3J0ZWRfZmll bGRzX3R5cGUgKmZpZWxkX3ZlYywKKwkJCQlpbnQgaWR4KQoreworICB0cmVl IHZhbHVlczsKKyAgZm9yICh2YWx1ZXMgPSBUWVBFX1ZBTFVFUyAoZW51bXR5 cGUpOyB2YWx1ZXM7IHZhbHVlcyA9IFRSRUVfQ0hBSU4gKHZhbHVlcykpCisg ICAgICBmaWVsZF92ZWMtPmVsdHNbaWR4KytdID0gVFJFRV9WQUxVRSAodmFs dWVzKTsKKyAgcmV0dXJuIGlkeDsKK30KKwogLyogRklFTEQgaXMgYSBiaXQt ZmllbGQuICBXZSBhcmUgZmluaXNoaW5nIHRoZSBwcm9jZXNzaW5nIGZvciBp dHMKICAgIGVuY2xvc2luZyB0eXBlLiAgSXNzdWUgYW55IGFwcHJvcHJpYXRl IG1lc3NhZ2VzIGFuZCBzZXQgYXBwcm9wcmlhdGUKICAgIGZsYWdzLiAgUmV0 dXJucyBmYWxzZSBpZiBhbiBlcnJvciBoYXMgYmVlbiBkaWFnbm9zZWQuICAq LwpAQCAtNTk5OCw3ICs2MDE1LDYgQEAgZmluaXNoX3N0cnVjdF8xICh0cmVl IHQpCiAgIHRyZWUgeDsKICAgLyogQSBUUkVFX0xJU1QuICBUaGUgVFJFRV9W QUxVRSBvZiBlYWNoIG5vZGUgaXMgYSBGVU5DVElPTl9ERUNMLiAgKi8KICAg dHJlZSB2aXJ0dWFscyA9IE5VTExfVFJFRTsKLSAgaW50IG5fZmllbGRzID0g MDsKIAogICBpZiAoQ09NUExFVEVfVFlQRV9QICh0KSkKICAgICB7CkBAIC02 MTE2LDE1ICs2MTMyLDcgQEAgZmluaXNoX3N0cnVjdF8xICh0cmVlIHQpCiAg ICAgIHVsdGltYXRlbHkgYXMgdGhlIHNlYXJjaCBib3JlcyB0aHJvdWdoIHRo ZSBpbmhlcml0YW5jZQogICAgICBoaWVyYXJjaHkpLCBhbmQgd2Ugd2FudCB0 aGlzIGZhaWx1cmUgdG8gb2NjdXIgcXVpY2tseS4gICovCiAKLSAgbl9maWVs ZHMgPSBjb3VudF9maWVsZHMgKFRZUEVfRklFTERTICh0KSk7Ci0gIGlmIChu X2ZpZWxkcyA+IDcpCi0gICAgewotICAgICAgc3RydWN0IHNvcnRlZF9maWVs ZHNfdHlwZSAqZmllbGRfdmVjID0gc29ydGVkX2ZpZWxkc190eXBlX25ldyAo bl9maWVsZHMpOwotICAgICAgYWRkX2ZpZWxkc190b19yZWNvcmRfdHlwZSAo VFlQRV9GSUVMRFMgKHQpLCBmaWVsZF92ZWMsIDApOwotICAgICAgcXNvcnQg KGZpZWxkX3ZlYy0+ZWx0cywgbl9maWVsZHMsIHNpemVvZiAodHJlZSksCi0J ICAgICBmaWVsZF9kZWNsX2NtcCk7Ci0gICAgICBDTEFTU1RZUEVfU09SVEVE X0ZJRUxEUyAodCkgPSBmaWVsZF92ZWM7Ci0gICAgfQorICBpbnNlcnRfaW50 b19jbGFzc3R5cGVfc29ydGVkX2ZpZWxkcyAoVFlQRV9GSUVMRFMgKHQpLCB0 LCA4KTsKIAogICAvKiBDb21wbGFpbiBpZiBvbmUgb2YgdGhlIGZpZWxkIHR5 cGVzIHJlcXVpcmVzIGxvd2VyIHZpc2liaWxpdHkuICAqLwogICBjb25zdHJh aW5fY2xhc3NfdmlzaWJpbGl0eSAodCk7CkBAIC02MTk3LDYgKzYyMDUsNDUg QEAgZmluaXNoX3N0cnVjdF8xICh0cmVlIHQpCiAgICAgfQogfQogCisvKiBJ bnNlcnQgRklFTERTIGludG8gVCBmb3IgdGhlIHNvcnRlZCBjYXNlIGlmIHRo ZSBGSUVMRFMgY291bnQgaXMKKyAgIGVxdWFsIHRvIFRIUkVTSE9MRCBvciBn cmVhdGVyIHRoYW4gVEhSRVNIT0xELiAgKi8KKworc3RhdGljIHZvaWQgCitp bnNlcnRfaW50b19jbGFzc3R5cGVfc29ydGVkX2ZpZWxkcyAodHJlZSBmaWVs ZHMsIHRyZWUgdCwgaW50IHRocmVzaG9sZCkKK3sKKyAgaW50IG5fZmllbGRz ID0gY291bnRfZmllbGRzIChmaWVsZHMpOworICBpZiAobl9maWVsZHMgPj0g dGhyZXNob2xkKQorICAgIHsKKyAgICAgIHN0cnVjdCBzb3J0ZWRfZmllbGRz X3R5cGUgKmZpZWxkX3ZlYyA9IHNvcnRlZF9maWVsZHNfdHlwZV9uZXcgKG5f ZmllbGRzKTsKKyAgICAgIGFkZF9maWVsZHNfdG9fcmVjb3JkX3R5cGUgKGZp ZWxkcywgZmllbGRfdmVjLCAwKTsKKyAgICAgIHFzb3J0IChmaWVsZF92ZWMt PmVsdHMsIG5fZmllbGRzLCBzaXplb2YgKHRyZWUpLCBmaWVsZF9kZWNsX2Nt cCk7CisgICAgICBDTEFTU1RZUEVfU09SVEVEX0ZJRUxEUyAodCkgPSBmaWVs ZF92ZWM7CisgICAgfQorfQorCisvKiBJbnNlcnQgbGF0ZWx5IGRlZmluZWQg ZW51bSBFTlVNVFlQRSBpbnRvIFQgZm9yIHRoZSBzb3J0ZWQgY2FzZS4gICov CisKK3ZvaWQKK2luc2VydF9sYXRlX2VudW1fZGVmX2ludG9fY2xhc3N0eXBl X3NvcnRlZF9maWVsZHMgKHRyZWUgZW51bXR5cGUsIHRyZWUgdCkKK3sKKyAg c3RydWN0IHNvcnRlZF9maWVsZHNfdHlwZSAqc29ydGVkX2ZpZWxkcyA9IENM QVNTVFlQRV9TT1JURURfRklFTERTICh0KTsKKyAgaWYgKHNvcnRlZF9maWVs ZHMpCisgICAgeworICAgICAgaW50IGk7CisgICAgICBpbnQgbl9maWVsZHMK Kwk9IGxpc3RfbGVuZ3RoIChUWVBFX1ZBTFVFUyAoZW51bXR5cGUpKSArIHNv cnRlZF9maWVsZHMtPmxlbjsKKyAgICAgIHN0cnVjdCBzb3J0ZWRfZmllbGRz X3R5cGUgKmZpZWxkX3ZlYyA9IHNvcnRlZF9maWVsZHNfdHlwZV9uZXcgKG5f ZmllbGRzKTsKKyAgICAgIAorICAgICAgZm9yIChpID0gMDsgaSA8IHNvcnRl ZF9maWVsZHMtPmxlbjsgKytpKQorCWZpZWxkX3ZlYy0+ZWx0c1tpXSA9IHNv cnRlZF9maWVsZHMtPmVsdHNbaV07CisKKyAgICAgIGFkZF9lbnVtX2ZpZWxk c190b19yZWNvcmRfdHlwZSAoZW51bXR5cGUsIGZpZWxkX3ZlYywKKwkJCQkg ICAgICBzb3J0ZWRfZmllbGRzLT5sZW4pOworICAgICAgcXNvcnQgKGZpZWxk X3ZlYy0+ZWx0cywgbl9maWVsZHMsIHNpemVvZiAodHJlZSksIGZpZWxkX2Rl Y2xfY21wKTsKKyAgICAgIENMQVNTVFlQRV9TT1JURURfRklFTERTICh0KSA9 IGZpZWxkX3ZlYzsKKyAgICB9Cit9CisKIC8qIFdoZW4gVCB3YXMgYnVpbHQg dXAsIHRoZSBtZW1iZXIgZGVjbGFyYXRpb25zIHdlcmUgYWRkZWQgaW4gcmV2 ZXJzZQogICAgb3JkZXIuICBSZWFycmFuZ2UgdGhlbSB0byBkZWNsYXJhdGlv biBvcmRlci4gICovCiAKSW5kZXg6IGdjYy9jcC9kZWNsLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gZ2NjL2NwL2RlY2wuYwkocmV2aXNpb24gMTg2 Njc0KQorKysgZ2NjL2NwL2RlY2wuYwkod29ya2luZyBjb3B5KQpAQCAtMTIz ODUsNiArMTIzODUsMTIgQEAgZmluaXNoX2VudW1fdmFsdWVfbGlzdCAodHJl ZSBlbnVtdHlwZSkKICAgZm9yICh0ID0gVFlQRV9NQUlOX1ZBUklBTlQgKGVu dW10eXBlKTsgdDsgdCA9IFRZUEVfTkVYVF9WQVJJQU5UICh0KSkKICAgICBU WVBFX1ZBTFVFUyAodCkgPSBUWVBFX1ZBTFVFUyAoZW51bXR5cGUpOwogCisg IGlmIChjdXJyZW50X2NsYXNzX3R5cGUKKyAgICAgICYmIENPTVBMRVRFX1RZ UEVfUCAoY3VycmVudF9jbGFzc190eXBlKQorICAgICAgJiYgVU5TQ09QRURf RU5VTV9QIChlbnVtdHlwZSkpCisgICAgaW5zZXJ0X2xhdGVfZW51bV9kZWZf aW50b19jbGFzc3R5cGVfc29ydGVkX2ZpZWxkcyAoZW51bXR5cGUsCisJCQkJ CQkgICAgICAgY3VycmVudF9jbGFzc190eXBlKTsKKwogICAvKiBGaW5pc2gg ZGVidWdnaW5nIG91dHB1dCBmb3IgdGhpcyB0eXBlLiAgKi8KICAgcmVzdF9v Zl90eXBlX2NvbXBpbGF0aW9uIChlbnVtdHlwZSwgbmFtZXNwYWNlX2JpbmRp bmdzX3AgKCkpOwogfQpJbmRleDogZ2NjL2NwL2NwLXRyZWUuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvY3AvY3AtdHJlZS5oCShyZXZpc2lv biAxODY2NzQpCisrKyBnY2MvY3AvY3AtdHJlZS5oCSh3b3JraW5nIGNvcHkp CkBAIC00OTc5LDYgKzQ5NzksNyBAQCBleHRlcm4gdHJlZSogZGVjbF9jbG9u ZWRfZnVuY3Rpb25fcAkJKGNvCiBleHRlcm4gdm9pZCBjbG9uZV9mdW5jdGlv bl9kZWNsCQkJKHRyZWUsIGludCk7CiBleHRlcm4gdm9pZCBhZGp1c3RfY2xv bmVfYXJncwkJCSh0cmVlKTsKIGV4dGVybiB2b2lkIGRlZHVjZV9ub2V4Y2Vw dF9vbl9kZXN0cnVjdG9yICAgICAgICh0cmVlKTsKK2V4dGVybiB2b2lkIGlu c2VydF9sYXRlX2VudW1fZGVmX2ludG9fY2xhc3N0eXBlX3NvcnRlZF9maWVs ZHMgKHRyZWUsIHRyZWUpOwogCiAvKiBpbiBjdnQuYyAqLwogZXh0ZXJuIHRy ZWUgY29udmVydF90b19yZWZlcmVuY2UJCSh0cmVlLCB0cmVlLCBpbnQsIGlu dCwgdHJlZSk7Cg== --00235447104ce5e70c04c0ba1ea2--