From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) by sourceware.org (Postfix) with ESMTPS id C82D73856DD5 for ; Wed, 26 Jul 2023 16:00:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C82D73856DD5 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-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b9a2033978so30562681fa.0 for ; Wed, 26 Jul 2023 09:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690387214; x=1690992014; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2dWAk6kLLTLqGsYeD0vG4ksiv2fSALGWEyOUCjUJ1T4=; b=fFOp4mDysuD7TWTPIhr/c9WusGdExNRh5HSk8DPh0DZj7oy2GobhM9IRLIfMpkAYgd JXqqybHDHW4d7FdsoJP/IevMB/u7+yGmNQn6mC1H6wNX78b1O6KUPJbOeuIDN6/rvquQ 3ofnSTAMKk2M2hGIPdU55qyef/rQTrUOmKAFDW6YA4h2EvcRQenk+8NWr2cuTdKBQY6P szfJ8kxch5+DwHwIbcYQ0t56/LD5kXRaaIkMuARlnTllj/PvcOF95eDFPXQX+dXc4g8G WjX4YP70s3WAmkEEqhDWdizdL9j6aBGFc5R7gq8YtwMSe9+I9hEO7hA8wCvaKhBfVDM9 k/rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690387214; x=1690992014; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2dWAk6kLLTLqGsYeD0vG4ksiv2fSALGWEyOUCjUJ1T4=; b=UiKyWz0a69tbyz2dmN5+mgFN8WxqysuVV6L1nL8DO8XfMdK4CkltcemP2K3WxR+2Bn th6fkqoIq0GeFwWp2DwRrYbqyVi/GlQ4/NNeyxYL9CQM+t1UKghP2IASj6M+2Evf/dYW zkw4m4cKl3X8gvdutcXqPpDIsljPiKG+3Lv/AjiFjurwXU9i9xd5g92qQe/Qe4A6VMk1 oVZFdJnkuIoEsRE8GEgmRa0Gi6qNAkzeyVi4TrKOBk0p1Fel5qfgiDjX+Sk0KYhIjFtq nv5v8kxcU04yMsscec3vKii7UQKlUmfmWXANj7MjXP0K9n7aYF5mLvMZHuqvGyXHmWun 0HyQ== X-Gm-Message-State: ABy/qLYMDEQjcFR4gG2UUxWTMCq0wuSFnIht8XCJd4C00c0y/apIGBnD VjSDGNV7miFMF9CmA8EKtWi1qnkhN3N3bytqW5FTt0kGz54= X-Google-Smtp-Source: APBJJlH9XfcVD5I9bdrZzuUQybQczZ3E0fzF9FXjmbcvU0D3aWE5Wg7V/Ce/3gzA3xcXce2oOQvZHyIaWv6ZYliyRbo= X-Received: by 2002:a2e:8198:0:b0:2b6:d7d1:95c0 with SMTP id e24-20020a2e8198000000b002b6d7d195c0mr1846394ljg.11.1690387213668; Wed, 26 Jul 2023 09:00:13 -0700 (PDT) MIME-Version: 1.0 References: <7523fbf9-30d8-4529-5dd4-0948c9ad3ef9@redhat.com> In-Reply-To: <7523fbf9-30d8-4529-5dd4-0948c9ad3ef9@redhat.com> From: Ng YongXiang Date: Thu, 27 Jul 2023 00:00:01 +0800 Message-ID: Subject: [PATCH] c++: devirtualization of array destruction [PR110057] To: Jason Merrill , gcc-patches@gcc.gnu.org Cc: Xi Ruoyao Content-Type: multipart/mixed; boundary="0000000000006769a2060165f1e2" X-Spam-Status: No, score=-6.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --0000000000006769a2060165f1e2 Content-Type: multipart/alternative; boundary="0000000000006769a0060165f1e0" --0000000000006769a0060165f1e0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Jason, Thanks for the reply and review. I've attached an updated patch with the change log and sign off. The change made in gcc/testsuite/g++.dg/warn/pr83054.C is because I think there is no more warning since we have already devirtualized the destruction for the array. Apologies for the poor formatting. It is my first time contributing. Do let me know if there's any stuff I've missed and feel free to modify the patch where you deem necessary. Thanks! On Wed, Jul 26, 2023 at 12:25=E2=80=AFPM Jason Merrill w= rote: > On 7/12/23 10:10, Ng YongXiang via Gcc-patches wrote: > > Component: > > c++ > > > > Bug ID: > > 110057 > > > > Bugzilla link: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D110057 > > > > Description: > > Array should not call virtual destructor of object when array is > destructed > > > > ChangeLog: > > > > 2023-07-12 Ng YongXiang PR c++ > > * Devirtualize auto generated destructor calls of arraycp/ * > > init.c: Call non virtual destructor of objects in arraytestsuite/ > > * g++.dg/devirt-array-destructor-1.C: New. * > > g++.dg/devirt-array-destructor-2.C: New. > > > > > > On Wed, Jul 12, 2023 at 5:02=E2=80=AFPM Xi Ruoyao = wrote: > > > >> On Wed, 2023-07-12 at 16:58 +0800, Ng YongXiang via Gcc-patches wrote: > >>> I'm writing to seek for a review for an issue I filed some time ago. > >>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D110057 . A proposed pa= tch > >> is > >>> attached in the bug tracker as well. > >> > >> You should send the patch to gcc-patches@gcc.gnu.org for a review, see > >> https://gcc.gnu.org/contribute.html for the details. Generally we > >> consider patches attached in bugzilla as drafts. > > Thanks! The change makes sense under > https://eel.is/c++draft/expr.delete#3.sentence-2 , but please look again > at contribute.html. > > In particular, the Legal section; you don't seem to have a copyright > assignment with the FSF, nor do I see a DCO certification > (https://gcc.gnu.org/dco.html) in your patch. > > Like the examples in contribute.html, the subject line should be more > like "[PATCH] c++: devirtualization of array destruction [PR110057]" > > The ChangeLog entry should be in the commit message. > > > * g++.dg/warn/pr83054.C: Change expected number of > devirtualized calls > > This isn't just changing the expected number, it's also changing the > array from a local variable to dynamically allocated, which is a big > change to what's being tested. If you want to test the dynamic case, > please add a new test instead of making this change. > > > diff --git a/gcc/testsuite/g++.dg/warn/pr83054.C > b/gcc/testsuite/g++.dg/warn/pr83054.C > > index 5285f94acee..7cd0951713d 100644 > > --- a/gcc/testsuite/g++.dg/warn/pr83054.C > > +++ b/gcc/testsuite/g++.dg/warn/pr83054.C > > @@ -10,7 +10,7 @@ > > #endif > > > > extern "C" int printf (const char *, ...); > > -struct foo // { dg-warning "final would enable devirtualization of 5 > calls" } > > +struct foo // { dg-warning "final would enable devirtualization of 1 > call" } > > { > > static int count; > > void print (int i, int j) { printf ("foo[%d][%d] =3D %d\n", i, j, x)= ; } > > @@ -29,19 +29,15 @@ int foo::count; > > > > int main () > > { > > - { > > - foo array[3][3]; > > - for (int i =3D 0; i < 3; i++) > > - { > > - for (int j =3D 0; j < 3; j++) > > - { > > - printf("&a[%d][%d] =3D %x\n", i, j, (void *)&array[i][j]); > > - } > > - } > > - // The count should be nine, if not, fail the test. > > - if (foo::count !=3D 9) > > - return 1; > > - } > > + foo* arr[9]; > > + for (int i =3D 0; i < 9; ++i) > > + arr[i] =3D new foo(); > > + if (foo::count !=3D 9) > > + return 1; > > + for (int i =3D 0; i < 9; ++i) > > + arr[i]->print(i / 3, i % 3); > > + for (int i =3D 0; i < 9; ++i) > > + delete arr[i]; > > > --0000000000006769a0060165f1e0-- --0000000000006769a2060165f1e2 Content-Type: application/x-patch; name="0001-PATCH-c-devirtualization-of-array-destruction-PR1100.patch" Content-Disposition: attachment; filename="0001-PATCH-c-devirtualization-of-array-destruction-PR1100.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkjwm4w10 RnJvbSAyYjdjYmQ4ZTA3ODdjOGUyMGYwNDY0ZGJmNjEwOTA4YTlmM2M2OGY3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5b25neGlhbmduZyA8 eW9uZ3hpYW5nbmdAZ21haWwuY29tPgpEYXRlOiBXZWQsIDI2IEp1bCAyMDIz IDIzOjQ1OjI1ICswODAwClN1YmplY3Q6IFtQQVRDSCAxLzFdIFtQQVRDSF0g YysrOiBkZXZpcnR1YWxpemF0aW9uIG9mIGFycmF5IGRlc3RydWN0aW9uCiBb UFIxMTAwNTddCgpjcC9DaGFuZ2VMb2c6CgogICAgICAgICogaW5pdC5jOiBD YWxsIG5vbiB2aXJ0dWFsIGRlc3RydWN0b3Igb2Ygb2JqZWN0cyBpbiBhcnJh eQoKdGVzdHN1aXRlL0NoYW5nZUxvZzoKCiAgICAgICAgKiBnKysuZGcvZGV2 aXJ0LWFycmF5LWRlc3RydWN0b3ItMS5DOiBOZXcuCiAgICAgICAgKiBnKysu ZGcvZGV2aXJ0LWFycmF5LWRlc3RydWN0b3ItMi5DOiBOZXcuCiAgICAgICAg KiBnKysuZGcvd2Fybi9wcjgzMDU0LkM6IFJlbW92ZSBleHBlY3RlZCB3YXJu aW5ncyBjYXVzZWQgYnkgZGV2aXJ0dWFsaXphdGlvbgoKU2lnbmVkLW9mZi1i eTogTmcgWW9uZyBYaWFuZyA8eW9uZ3hpYW5nbmdAZ21haWwuY29tPgotLS0K IGdjYy9jcC9pbml0LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA4ICsrKy0tLQogLi4uL2crKy5kZy9kZXZpcnQtYXJyYXktZGVzdHJ1 Y3Rvci0xLkMgICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrCiAuLi4v ZysrLmRnL2RldmlydC1hcnJheS1kZXN0cnVjdG9yLTIuQyAgICAgICAgfCAy OCArKysrKysrKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2crKy5kZy93 YXJuL3ByODMwNTQuQyAgICAgICAgICAgfCAgMiArLQogNCBmaWxlcyBjaGFu Z2VkLCA2MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2RldmlydC1hcnJh eS1kZXN0cnVjdG9yLTEuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZysrLmRnL2RldmlydC1hcnJheS1kZXN0cnVjdG9yLTIuQwoKZGlm ZiAtLWdpdCBhL2djYy9jcC9pbml0LmNjIGIvZ2NjL2NwL2luaXQuY2MKaW5k ZXggNmNjZGEzNjViMDQuLjY5YWI1MWQwYTRiIDEwMDY0NAotLS0gYS9nY2Mv Y3AvaW5pdC5jYworKysgYi9nY2MvY3AvaW5pdC5jYwpAQCAtNDExMiw4ICs0 MTEyLDggQEAgYnVpbGRfdmVjX2RlbGV0ZV8xIChsb2NhdGlvbl90IGxvYywg dHJlZSBiYXNlLCB0cmVlIG1heGluZGV4LCB0cmVlIHR5cGUsCiAgICAgICBp ZiAodHlwZV9idWlsZF9kdG9yX2NhbGwgKHR5cGUpKQogCXsKIAkgIHRtcCA9 IGJ1aWxkX2RlbGV0ZSAobG9jLCBwdHlwZSwgYmFzZSwgc2ZrX2NvbXBsZXRl X2Rlc3RydWN0b3IsCi0JCQkgICAgICBMT09LVVBfTk9STUFMfExPT0tVUF9E RVNUUlVDVE9SLCAxLAotCQkJICAgICAgY29tcGxhaW4pOworCQkJICAgICAg TE9PS1VQX05PUk1BTHxMT09LVVBfREVTVFJVQ1RPUnxMT09LVVBfTk9OVklS VFVBTCwKKwkJCSAgICAgIDEsIGNvbXBsYWluKTsKIAkgIGlmICh0bXAgPT0g ZXJyb3JfbWFya19ub2RlKQogCSAgICByZXR1cm4gZXJyb3JfbWFya19ub2Rl OwogCX0KQEAgLTQxNDMsOCArNDE0Myw4IEBAIGJ1aWxkX3ZlY19kZWxldGVf MSAobG9jYXRpb25fdCBsb2MsIHRyZWUgYmFzZSwgdHJlZSBtYXhpbmRleCwg dHJlZSB0eXBlLAogICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAgIGJv ZHkgPSBidWlsZF9jb21wb3VuZF9leHByIChsb2MsIGJvZHksIHRtcCk7CiAg IHRtcCA9IGJ1aWxkX2RlbGV0ZSAobG9jLCBwdHlwZSwgdGJhc2UsIHNma19j b21wbGV0ZV9kZXN0cnVjdG9yLAotCQkgICAgICBMT09LVVBfTk9STUFMfExP T0tVUF9ERVNUUlVDVE9SLCAxLAotCQkgICAgICBjb21wbGFpbik7CisJCSAg ICAgIExPT0tVUF9OT1JNQUx8TE9PS1VQX0RFU1RSVUNUT1J8TE9PS1VQX05P TlZJUlRVQUwsCisJCSAgICAgIDEsIGNvbXBsYWluKTsKICAgaWYgKHRtcCA9 PSBlcnJvcl9tYXJrX25vZGUpCiAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9k ZTsKICAgYm9keSA9IGJ1aWxkX2NvbXBvdW5kX2V4cHIgKGxvYywgYm9keSwg dG1wKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2Rldmly dC1hcnJheS1kZXN0cnVjdG9yLTEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRn L2RldmlydC1hcnJheS1kZXN0cnVjdG9yLTEuQwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmUyZDE2YWU3NjEKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9kZXZpcnQtYXJyYXkt ZGVzdHJ1Y3Rvci0xLkMKQEAgLTAsMCArMSwyNyBAQAorLyogeyBkZy1kbyBy dW4gfSAqLworLyogVmlydHVhbCBjYWxscyBzaG91bGQgYmUgZGV2aXJ0dWFs aXplZCBiZWNhdXNlIHdlIGtub3cgZHluYW1pYyB0eXBlIG9mIG9iamVjdCBp biBhcnJheSBhdCBjb21waWxlIHRpbWUgKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8zIC1mZHVtcC10cmVlLW9wdGltaXplZCAtZm5vLWlubGluZSIgIH0gKi8K KworY2xhc3MgQQoreworcHVibGljOgorICB2aXJ0dWFsIH5BKCkKKyAgewor ICB9Cit9OworCitjbGFzcyBCIDogcHVibGljIEEKK3sKK3B1YmxpYzoKKyAg dmlydHVhbCB+QigpCisgIHsKKyAgfQorfTsKKworaW50IG1haW4oKQorewor ICBCIGJbMTBdOworICByZXR1cm4gMDsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJPQkpfVFlQRV9SRUYiIDAgIm9wdGlt aXplZCJ9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2RldmlydC1hcnJheS1kZXN0cnVjdG9yLTIuQyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2RldmlydC1hcnJheS1kZXN0cnVjdG9yLTIuQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGIzYWIyY2E5ZDAKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9kZXZpcnQt YXJyYXktZGVzdHJ1Y3Rvci0yLkMKQEAgLTAsMCArMSwyOCBAQAorLyogeyBk Zy1kbyBydW4gfSAqLworLyogVmlydHVhbCBjYWxscyBzaG91bGQgYmUgZGV2 aXJ0dWFsaXplZCBiZWNhdXNlIHdlIGtub3cgZHluYW1pYyB0eXBlIG9mIG9i amVjdCBpbiBhcnJheSBhdCBjb21waWxlIHRpbWUgKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8zIC1mZHVtcC10cmVlLW9wdGltaXplZCAtZm5vLWlubGluZSIg IH0gKi8KKworY2xhc3MgQQoreworcHVibGljOgorICB2aXJ0dWFsIH5BKCkK KyAgeworICB9Cit9OworCitjbGFzcyBCIDogcHVibGljIEEKK3sKK3B1Ymxp YzoKKyAgdmlydHVhbCB+QigpCisgIHsKKyAgfQorfTsKKworaW50IG1haW4o KQoreworICBCKiBwdHIgPSBuZXcgQlsxMF07CisgIGRlbGV0ZVtdIHB0cjsK KyAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiT0JKX1RZUEVfUkVGIiAwICJvcHRpbWl6ZWQifSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3ByODMw NTQuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vcHI4MzA1NC5DCmlu ZGV4IDUyODVmOTRhY2VlLi41YTRhNmFiZTI0OCAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9wcjgzMDU0LkMKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvd2Fybi9wcjgzMDU0LkMKQEAgLTEwLDcgKzEwLDcg QEAKICNlbmRpZgogCiBleHRlcm4gIkMiIGludCBwcmludGYgKGNvbnN0IGNo YXIgKiwgLi4uKTsKLXN0cnVjdCBmb28gLy8geyBkZy13YXJuaW5nICJmaW5h bCB3b3VsZCBlbmFibGUgZGV2aXJ0dWFsaXphdGlvbiBvZiA1IGNhbGxzIiB9 CitzdHJ1Y3QgZm9vCiB7CiAgIHN0YXRpYyBpbnQgY291bnQ7CiAgIHZvaWQg cHJpbnQgKGludCBpLCBpbnQgaikgeyBwcmludGYgKCJmb29bJWRdWyVkXSA9 ICVkXG4iLCBpLCBqLCB4KTsgfQotLSAKMi4zNC4xCgo= --0000000000006769a2060165f1e2--