From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by sourceware.org (Postfix) with ESMTPS id 2DC7B3858C78 for ; Sun, 13 Mar 2022 23:43:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2DC7B3858C78 Received: by mail-io1-xd2e.google.com with SMTP id d62so16272310iog.13 for ; Sun, 13 Mar 2022 16:43:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kGRs1fdzmpMXtMKNIG5CgVTxdPLpE+QKs8NwugH2A7M=; b=sd4Sa8pQAsGsYoNNapI+umcd3S7iJanQambxvnWOnRElOLBEAjQSEImYupIchFIhD0 3INzS44lfr5yfVD9A6iw4KC1KcFlNUQ65gs1Ut4IDIblCQ++hIvM8IYxm/oJdJKrF03Z opYXy4amAJPX+j0M8UZ1Rv/JYkqZjnzfo7gIvTSNO0qgYDUCV2/jQ6euNS/Jp1aAC6lR hc1pJOC6ziakzzI0x2sXoRxS1x6K2y3qQT/Tcu62k8UvbuLoy4p6ESnNHCYTpTJ8ukd/ +JLAGOQVHmbe8uGlF6oF6dspuc0JEyMIb9nq5+a4XqR6klotYxDh639zYLdbmXkviTA1 DyAg== X-Gm-Message-State: AOAM530NEvPObjrGp4NMaVgbQ6Td61iVNEk9CLWo5qkLJUZ/NlU/NUyb aqciXWV/X2aQUp5n8hrdWk5kNQTat3Pi4cfbKfFiwqA9DtGGGA== X-Google-Smtp-Source: ABdhPJxJ68noRAbeb0tJdtFlHNcQYW7IOZ3UPOfOemkR/EXJVaUtbUsOlSODmU68o+5i6x/gtiHM68MBBcNyB32MKDg= X-Received: by 2002:a05:6602:3ca:b0:63d:dfc8:fa66 with SMTP id g10-20020a05660203ca00b0063ddfc8fa66mr17104405iov.128.1647215024034; Sun, 13 Mar 2022 16:43:44 -0700 (PDT) MIME-Version: 1.0 References: <2de1c604-9178-a2be-2ae8-de598e0c7409@redhat.com> In-Reply-To: From: Zhao Wei Liew Date: Mon, 14 Mar 2022 07:43:08 +0800 Message-ID: Subject: Re: [PATCH v7] c++: Add diagnostic when operator= is used as truth cond [PR25689] To: Jason Merrill Cc: GCC Patches Content-Type: multipart/mixed; boundary="00000000000060cb7805da2222b0" X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Mar 2022 23:43:48 -0000 --00000000000060cb7805da2222b0 Content-Type: text/plain; charset="UTF-8" On Sat, 12 Mar 2022 at 06:15, Jason Merrill wrote: > It looks good, but unfortunately regresses some other warning tests, > such as Wnonnull5.C. Please remember to run the regression tests before > sending a patch (https://gcc.gnu.org/contribute.html#testing). > > This seems to be a complicated problem with suppress_warning, which > means your call to suppress_warning effectively silences all later > warnings, not just -Wparentheses. > > You should be able to work around this issue by only calling > suppress_warning in the specific case we're interested in, i.e. when > warn_parentheses is enabled and "call" is a MODIFY_EXPR. My apologies. I've fixed the issue as you suggested and run the regression tests to ensure no test regressions. The new patch (v9) is attached. v8: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590570.html Changes since v8: 1. Fix a test regression by calling suppress_warning only when "call" is a MODIFY_EXPR. v7: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590464.html Changes since v7: 1. Suppress -Wparentheses warnings in build_new_method_call. 2. Uncomment the test case for if (b1.operator= (b2)). v6: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590419.html Changes since v6: 1. Check for error_mark_node in is_assignment_op_expr_pr. 2. Change "c:" to "c++:". v5: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590393.html Changes since v5: 1. Revert changes in v4. 2. Replace gcc_assert with a return NULL_TREE in extract_call_expr. v4: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590379.html Changes since v4: 1. Refactor the non-assert-related code out of extract_call_expr and call that function instead to check for call expressions. v3: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590310.html Changes since v3: 1. Also handle COMPOUND_EXPRs and TARGET_EXPRs. v2: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590236.html Changes since v2: 1. Add more test cases in Wparentheses-31.C. 2. Refactor added logic to a function (is_assignment_overload_ref_p). 3. Use REFERENCE_REF_P instead of INDIRECT_REF_P. v1: https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590158.html Changes since v1: 1. Use CALL_EXPR_OPERATOR_SYNTAX to avoid warnings for explicit operator=() calls. 2. Use INDIRECT_REF_P to filter implicit operator=() calls. 3. Use cp_get_callee_fndecl_nofold. 4. Add spaces before (. --00000000000060cb7805da2222b0 Content-Type: text/plain; charset="US-ASCII"; name="0001-c-Add-diagnostic-when-operator-is-used-as-truth-cond.patch.txt" Content-Disposition: attachment; filename="0001-c-Add-diagnostic-when-operator-is-used-as-truth-cond.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0px8hgl0 RnJvbSAyOGY4ODRkNTFhNTY4ODllODRhY2JhOTcwYTVhYWM5ZGE4YjI0ZDk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGFvIFdlaSBMaWV3IDx6aGFvd2VpbGlld0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTUgRmViIDIwMjIgMTc6NDQ6MjkgKzA4MDAKU3ViamVjdDogW1BBVENIXSBj Kys6IEFkZCBkaWFnbm9zdGljIHdoZW4gb3BlcmF0b3I9IGlzIHVzZWQgYXMgdHJ1dGggY29uZAog W1BSMjU2ODldCgpXaGVuIGNvbXBpbGluZyB0aGUgZm9sbG93aW5nIGNvZGUgd2l0aCBnKysgLVdw YXJlbnRoZXNlcywgR0NDIGRvZXMgbm90Cndhcm4gb24gdGhlIGlmIHN0YXRlbWVudC4gRm9yIGV4 YW1wbGUsIHRoZXJlIGlzIG5vIHdhcm5pbmcgZm9yIHRoaXMgY29kZToKCnN0cnVjdCBBIHsKCUEm IG9wZXJhdG9yPShpbnQpOwoJb3BlcmF0b3IgYm9vbCgpOwp9OwoKdm9pZCBmKEEgYSkgewoJaWYg KGEgPSAwKTsgLy8gbm8gd2FybmluZwp9CgpUaGlzIGlzIGJlY2F1c2UgYSA9IDAgaXMgYSBjYWxs IHRvIG9wZXJhdG9yPSwgd2hpY2ggR0NDIGRvZXMgbm90IGhhbmRsZS4KClRoaXMgcGF0Y2ggZml4 ZXMgdGhpcyBpc3N1ZSBieSBoYW5kbGluZyBjYWxscyB0byBvcGVyYXRvcj0gd2hlbiBkZWNpZGlu Zwp0byB3YXJuLgoKQm9vdHN0cmFwcGVkIGFuZCByZWdyZXNzaW9uIHRlc3RlZCBvbiB4ODZfNjQt cGMtbGludXgtZ251LgoKCVBSIGMrKy8yNTY4OQoKZ2NjL2NwL0NoYW5nZUxvZzoKCgkqIGNhbGwu Y2MgKGV4dHJhY3RfY2FsbF9leHByKTogUmV0dXJuIGEgTlVMTF9UUkVFIG9uIGZhaWx1cmUKCSAg aW5zdGVhZCBvZiBhc3NlcnRpbmcuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogU3VwcHJlc3Mg LVdwYXJlbnRoZXNlcyBkaWFnbm9zdGljIGZvcgoJICBNT0RJRllfRVhQUi4KCSogc2VtYW50aWNz LmNjIChpc19hc3NpZ25tZW50X29wX2V4cHJfcCk6IEFkZCBmdW5jdGlvbiB0byBjaGVjawoJICBp ZiBhbiBleHByZXNzaW9uIGlzIGEgY2FsbCB0byBhbiBvcD0gb3BlcmF0b3IgZXhwcmVzc2lvbi4K CShtYXliZV9jb252ZXJ0X2NvbmQpOiBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBvcD0gb3BlcmF0b3Ig ZXhwcmVzc2lvbgoJICBmb3IgdGhlIC1XcGFyZW50aGVzZXMgZGlhZ25vc3RpYy4KCmdjYy90ZXN0 c3VpdGUvQ2hhbmdlTG9nOgoKCSogZysrLmRnL3dhcm4vV3BhcmVudGhlc2VzLTMxLkM6IE5ldyB0 ZXN0LgoKU2lnbmVkLW9mZi1ieTogWmhhbyBXZWkgTGlldyA8emhhb3dlaWxpZXdAZ21haWwuY29t PgotLS0KIGdjYy9jcC9jYWxsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyAr KystLQogZ2NjL2NwL3NlbWFudGljcy5jYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIyICsr KysrKystCiBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL1dwYXJlbnRoZXNlcy0zMS5DIHwgNTkg KysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv d2Fybi9XcGFyZW50aGVzZXMtMzEuQwoKZGlmZiAtLWdpdCBhL2djYy9jcC9jYWxsLmNjIGIvZ2Nj L2NwL2NhbGwuY2MKaW5kZXggOGZlOGVmMzA2ZWEuLmY1MDIyNTFjMjkxIDEwMDY0NAotLS0gYS9n Y2MvY3AvY2FsbC5jYworKysgYi9nY2MvY3AvY2FsbC5jYwpAQCAtNzEwMSw5ICs3MTAxLDEwIEBA IGV4dHJhY3RfY2FsbF9leHByICh0cmVlIGNhbGwpCiAgICAgICBkZWZhdWx0OjsKICAgICAgIH0K IAotICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGNhbGwpID09IENBTExfRVhQUgotCSAgICAgIHx8 IFRSRUVfQ09ERSAoY2FsbCkgPT0gQUdHUl9JTklUX0VYUFIKLQkgICAgICB8fCBjYWxsID09IGVy cm9yX21hcmtfbm9kZSk7CisgIGlmIChUUkVFX0NPREUgKGNhbGwpICE9IENBTExfRVhQUgorICAg ICAgJiYgVFJFRV9DT0RFIChjYWxsKSAhPSBBR0dSX0lOSVRfRVhQUgorICAgICAgJiYgY2FsbCAh PSBlcnJvcl9tYXJrX25vZGUpCisgICAgcmV0dXJuIE5VTExfVFJFRTsKICAgcmV0dXJuIGNhbGw7 CiB9CiAKQEAgLTExMTQ4LDYgKzExMTQ5LDEyIEBAIGJ1aWxkX25ld19tZXRob2RfY2FsbCAodHJl ZSBpbnN0YW5jZSwgdHJlZSBmbnMsIHZlYzx0cmVlLCB2YV9nYz4gKiphcmdzLAogCQkqZm5fcCA9 IGZuOwogCSAgICAgIC8qIEJ1aWxkIHRoZSBhY3R1YWwgQ0FMTF9FWFBSLiAgKi8KIAkgICAgICBj YWxsID0gYnVpbGRfb3Zlcl9jYWxsIChjYW5kLCBmbGFncywgY29tcGxhaW4pOworCisJICAgICAg LyogU3VwcHJlc3Mgd2FybmluZ3MgZm9yIGlmIChteV9zdHJ1Y3Qub3BlcmF0b3I9ICh4KSkgd2hl cmUKKwkgICAgICAgICBteV9zdHJ1Y3QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYm9vbC4g Ki8KKwkgICAgICBpZiAoVFJFRV9DT0RFIChjYWxsKSA9PSBNT0RJRllfRVhQUikKKwkgICAgICAg IHN1cHByZXNzX3dhcm5pbmcgKGNhbGwsIE9QVF9XcGFyZW50aGVzZXMpOworCiAJICAgICAgLyog SW4gYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYS0+ZigpJyB3aGVyZSBgZicgdHVybnMKIAkJ IG91dCB0byBiZSBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24sIGBhJyBpcwogCQkgbm9uZS10aGUt bGVzcyBldmFsdWF0ZWQuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlbWFudGljcy5jYyBiL2dj Yy9jcC9zZW1hbnRpY3MuY2MKaW5kZXggZDU1NjVlYmUwMmQuLjA2ZTFkYjZlNDlhIDEwMDY0NAot LS0gYS9nY2MvY3Avc2VtYW50aWNzLmNjCisrKyBiL2djYy9jcC9zZW1hbnRpY3MuY2MKQEAgLTgx NSw2ICs4MTUsMjYgQEAgZmluaXNoX2dvdG9fc3RtdCAodHJlZSBkZXN0aW5hdGlvbikKICAgcmV0 dXJuIGFkZF9zdG10IChidWlsZF9zdG10IChpbnB1dF9sb2NhdGlvbiwgR09UT19FWFBSLCBkZXN0 aW5hdGlvbikpOwogfQogCisvKiBSZXR1cm5zIHRydWUgaWYgQ0FMTCBpcyBhIChwb3NzaWJseSB3 cmFwcGVkKSBDQUxMX0VYUFIgb3IgQUdHUl9JTklUX0VYUFIKKyAgIHRvIG9wZXJhdG9yPSAoKSB0 aGF0IGlzIHdyaXR0ZW4gYXMgYW4gb3BlcmF0b3IgZXhwcmVzc2lvbi4gKi8KK3N0YXRpYyBib29s Citpc19hc3NpZ25tZW50X29wX2V4cHJfcCAodHJlZSBjYWxsKQoreworICBpZiAoY2FsbCA9PSBO VUxMX1RSRUUpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGNhbGwgPSBleHRyYWN0X2NhbGxfZXhw ciAoY2FsbCk7CisgIGlmIChjYWxsID09IE5VTExfVFJFRQorICAgICAgfHwgY2FsbCA9PSBlcnJv cl9tYXJrX25vZGUKKyAgICAgIHx8ICFDQUxMX0VYUFJfT1BFUkFUT1JfU1lOVEFYIChjYWxsKSkK KyAgICByZXR1cm4gZmFsc2U7CisKKyAgdHJlZSBmbmRlY2wgPSBjcF9nZXRfY2FsbGVlX2ZuZGVj bF9ub2ZvbGQgKGNhbGwpOworICByZXR1cm4gZm5kZWNsICE9IE5VTExfVFJFRQorICAgICYmIERF Q0xfQVNTSUdOTUVOVF9PUEVSQVRPUl9QIChmbmRlY2wpCisgICAgJiYgREVDTF9PVkVSTE9BREVE X09QRVJBVE9SX0lTIChmbmRlY2wsIE5PUF9FWFBSKTsKK30KKwogLyogQ09ORCBpcyB0aGUgY29u ZGl0aW9uLWV4cHJlc3Npb24gZm9yIGFuIGlmLCB3aGlsZSwgZXRjLiwKICAgIHN0YXRlbWVudC4g IENvbnZlcnQgaXQgdG8gYSBib29sZWFuIHZhbHVlLCBpZiBhcHByb3ByaWF0ZS4KICAgIEluIGFk ZGl0aW9uLCB2ZXJpZnkgc2VxdWVuY2UgcG9pbnRzIGlmIC1Xc2VxdWVuY2UtcG9pbnQgaXMgZW5h YmxlZC4gICovCkBAIC04MzYsNyArODU2LDcgQEAgbWF5YmVfY29udmVydF9jb25kICh0cmVlIGNv bmQpCiAgIC8qIERvIHRoZSBjb252ZXJzaW9uLiAgKi8KICAgY29uZCA9IGNvbnZlcnRfZnJvbV9y ZWZlcmVuY2UgKGNvbmQpOwogCi0gIGlmIChUUkVFX0NPREUgKGNvbmQpID09IE1PRElGWV9FWFBS CisgIGlmICgoVFJFRV9DT0RFIChjb25kKSA9PSBNT0RJRllfRVhQUiB8fCBpc19hc3NpZ25tZW50 X29wX2V4cHJfcCAoY29uZCkpCiAgICAgICAmJiB3YXJuX3BhcmVudGhlc2VzCiAgICAgICAmJiAh d2FybmluZ19zdXBwcmVzc2VkX3AgKGNvbmQsIE9QVF9XcGFyZW50aGVzZXMpCiAgICAgICAmJiB3 YXJuaW5nX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGNvbmQpLApkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9XcGFyZW50aGVzZXMtMzEuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL3dhcm4vV3BhcmVudGhlc2VzLTMxLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjZiNWNlM2MwZTZiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvd2Fybi9XcGFyZW50aGVzZXMtMzEuQwpAQCAtMCwwICsxLDU5IEBACisvKiBU ZXN0IHRoYXQgLVdwYXJlbnRoZXNlcyB3YXJucyBmb3Igc3RydWN0L2NsYXNzIGFzc2lnbm1lbnRz LAorICAgZXhjZXB0IGZvciBleHBsaWNpdCBjYWxscyB0byBvcGVyYXRvcj0gKCkuICovCisvKiBQ UiBjKysvMjU2ODkgKi8KKy8qIHsgZGctb3B0aW9ucyAiLVdwYXJlbnRoZXNlcyIgfSAgKi8KKwor c3RydWN0IEEKK3sKKwlBJiBvcGVyYXRvcj0gKGludCk7CisJQSBvcGVyYXRvcj0gKGRvdWJsZSk7 CisJb3BlcmF0b3IgYm9vbCAoKTsKK307CisKK3N0cnVjdCBCCit7CisJYm9vbCB4OworCUImIG9w ZXJhdG9yPSAoaW50KTsKKwlCIG9wZXJhdG9yPSAoZG91YmxlKTsKKwlvcGVyYXRvciBib29sICgp OworfTsKKworc3RydWN0IEMKK3sKKwlDJiBvcGVyYXRvcj0gKGludCk7CisJdmlydHVhbCBDIG9w ZXJhdG9yPSAoZG91YmxlKTsKKwlvcGVyYXRvciBib29sICgpOworfTsKKworLyogVGVzdCBlbXB0 eSBjbGFzcyAqLwordm9pZCBmMSAoQSBhMSwgQSBhMikKK3sKKwlpZiAoYTEgPSAwKTsgLyogeyBk Zy13YXJuaW5nICJzdWdnZXN0IHBhcmVudGhlc2VzIiB9ICovCisJaWYgKGExID0gMC4pOyAvKiB7 IGRnLXdhcm5pbmcgInN1Z2dlc3QgcGFyZW50aGVzZXMiIH0gKi8KKwlpZiAoYTEub3BlcmF0b3I9 ICgwKSk7CisJaWYgKGExLm9wZXJhdG9yPSAoYTIpKTsKKworCS8qIElkZWFsbHksIHdlJ2Qgd2Fy biBmb3IgZW1wdHkgY2xhc3NlcyB1c2luZyB0cml2aWFsIG9wZXJhdG9yPSAoYmVsb3cpLAorCSAg IGJ1dCB3ZSBkb24ndCBkbyBzbyB5ZXQgYXMgaXQgaXMgYSBub24tdHJpdmlhbCBDT01QT1VORF9F WFBSLiAqLworCS8vIGlmIChhMSA9IGEyKTsgCit9CisKKy8qIFRlc3Qgbm9uLWVtcHR5IGNsYXNz ICovCit2b2lkIGYyIChCIGIxLCBCIGIyKQoreworCWlmIChiMSA9IDApOyAvKiB7IGRnLXdhcm5p bmcgInN1Z2dlc3QgcGFyZW50aGVzZXMiIH0gKi8KKwlpZiAoYjEgPSAwLik7IC8qIHsgZGctd2Fy bmluZyAic3VnZ2VzdCBwYXJlbnRoZXNlcyIgfSAqLworCWlmIChiMSA9IGIyKTsgLyogeyBkZy13 YXJuaW5nICJzdWdnZXN0IHBhcmVudGhlc2VzIiB9ICovCisJaWYgKGIxLm9wZXJhdG9yPSAoMCkp OworCWlmIChiMS5vcGVyYXRvcj0gKGIyKSk7Cit9CisKKy8qIFRlc3QgY2xhc3Mgd2l0aCB2dGFi bGUgKi8KK3ZvaWQgZjMgKEMgYzEsIEMgYzIpCit7CisJaWYgKGMxID0gMCk7IC8qIHsgZGctd2Fy bmluZyAic3VnZ2VzdCBwYXJlbnRoZXNlcyIgfSAqLworCWlmIChjMSA9IDAuKTsgLyogeyBkZy13 YXJuaW5nICJzdWdnZXN0IHBhcmVudGhlc2VzIiB9ICovCisJaWYgKGMxID0gYzIpOyAvKiB7IGRn LXdhcm5pbmcgInN1Z2dlc3QgcGFyZW50aGVzZXMiIH0gKi8KKwlpZiAoYzEub3BlcmF0b3I9ICgw KSk7CisJaWYgKGMxLm9wZXJhdG9yPSAoYzIpKTsKK30KLS0gCjIuMjUuMQoK --00000000000060cb7805da2222b0--