From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) by sourceware.org (Postfix) with ESMTPS id CF9603858D20 for ; Tue, 8 Feb 2022 21:59:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CF9603858D20 Received: by mail-io1-xd29.google.com with SMTP id q204so821539iod.8 for ; Tue, 08 Feb 2022 13:59:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:cc:from:subject; bh=FJrm2lStHquMLPJIYuGLSi/0hoMwWKEkUKlusN0DbC0=; b=eF63FwowOukhuE6PZdiK5mNi6IqBg8Lx5UsTiaEDFDHNjLF6lY0ot2gMhrEZWuhrGb umhMnxXehcBmREXRF/S5d7DUB66wstf/y2ET22PyKlWCKpfdjmvYA7pfOh1SXCzRISiH 06K3Ur7FrJ99m+i8v2n59LexuQzTgrucj8KaIV9t0YhvCZ8zOv3WcJ5EaETcqOSOGjPk IVAhyBrafMLeRu214YsJV1p1RIbvFy00dCXYl2zBS9zWKfG0LseOxMcZ5DMAsu77SRJQ taEwCYFWnMMasdJ82Xl+MmQKcl5Y1Jq/uxclYUS18DIdcs0coE7mpt+JTKWCcJBPDBhF RUYQ== X-Gm-Message-State: AOAM531rYG2JUbitDAShOJaETG8NSDEth9Fs/PG3N4j2jDFAcEy4M3ss LXnOWu0iaNYwOCYsPVo17p7pMWtdX6A= X-Google-Smtp-Source: ABdhPJyUd/BlpeTXybcL2LN9kfZd7ld2s9NwkYThGs0Ai2ydFrGmZdKOIoe/Q0vkzL9EjbNHlzT5mw== X-Received: by 2002:a05:6602:2c8d:: with SMTP id i13mr3108900iow.181.1644357548103; Tue, 08 Feb 2022 13:59:08 -0800 (PST) Received: from [192.168.0.41] (97-118-104-1.hlrn.qwest.net. [97.118.104.1]) by smtp.gmail.com with ESMTPSA id i17sm5771361ilq.19.2022.02.08.13.59.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 08 Feb 2022 13:59:07 -0800 (PST) Content-Type: multipart/mixed; boundary="------------JKPTxv3fPxMGsonMyzq5iirI" Message-ID: <93612754-9bd2-7e45-f6fa-1704c2f78c54@gmail.com> Date: Tue, 8 Feb 2022 14:59:07 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 Content-Language: en-US To: gcc-patches From: Martin Sebor Subject: [PATCH] handle "invisible" reference in -Wdangling-pointer (PR104436) X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, 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: Tue, 08 Feb 2022 21:59:10 -0000 This is a multi-part message in MIME format. --------------JKPTxv3fPxMGsonMyzq5iirI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Transforming a by-value arguments to by-reference as GCC does for some class types can trigger -Wdangling-pointer when the argument is used to store the address of a local variable. Since the stored value is not accessible in the caller the warning is a false positive. The attached patch handles this case by excluding PARM_DECLs with the DECL_BY_REFERENCE bit set from consideration. While testing the patch I noticed some instances of the warning are uninitentionally duplicated as the pass runs more than once. To avoid that, I also introduce warning suppression into the handler for this instance of the warning. (There might still be others.) Tested on x86_64-linux. Martin --------------JKPTxv3fPxMGsonMyzq5iirI Content-Type: text/x-patch; charset=UTF-8; name="gcc-104436.diff" Content-Disposition: attachment; filename="gcc-104436.diff" Content-Transfer-Encoding: base64 QXZvaWQgLVdkYW5nbGluZy1wb2ludGVyIGZvciBieS10cmFuc3BhcmVudC1yZWZlcmVuY2Ug YXJndW1lbnRzIFtQUjEwNDQzNl0uCgpSZXNvbHZlczoKUFIgbWlkZGxlLWVuZC8xMDQ0MzYg LSBzcHVyaW91cyAtV2RhbmdsaW5nLXBvaW50ZXIgYXNzaWduaW5nIGxvY2FsIGFkZHJlc3Mg dG8gYSBjbGFzcyBwYXNzZWQgYnkgdmFsdWUKCmdjYy9DaGFuZ2VMb2c6CgoJUFIgbWlkZGxl LWVuZC8xMDQ0MzYKCSogZ2ltcGxlLXNzYS13YXJuLWFjY2Vzcy5jYyAocGFzc193YWNjZXNz OjpjaGVja19kYW5nbGluZ19zdG9yZXMpOgoJQ2hlY2sgZm9yIHdhcm5pbmcgc3VwcHJlc3Np b24uICBBdm9pZCBieS12YWx1ZSBhcmd1bWVudHMgdHJhbnNmb3JtZWQKCWludG8gYnktdHJh bnNwYXJlbnQtcmVmZXJlbmNlLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJUFIgbWlk ZGxlLWVuZC8xMDQ0MzYKCSogYy1jKystY29tbW9uL1dkYW5nbGluZy1wb2ludGVyLTcuYzog TmV3IHRlc3QuCgkqIGcrKy5kZy93YXJuL1dkYW5nbGluZy1wb2ludGVyLTQuQzogTmV3IHRl c3QuCgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1zc2Etd2Fybi1hY2Nlc3MuY2MgYi9nY2Mv Z2ltcGxlLXNzYS13YXJuLWFjY2Vzcy5jYwppbmRleCA4MGQ0MWVhNDM4My4uMGMzMTlhMzJi NzAgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtc3NhLXdhcm4tYWNjZXNzLmNjCisrKyBiL2dj Yy9naW1wbGUtc3NhLXdhcm4tYWNjZXNzLmNjCkBAIC00NTE3LDYgKzQ1MTcsOSBAQCBwYXNz X3dhY2Nlc3M6OmNoZWNrX2RhbmdsaW5nX3N0b3JlcyAoYmFzaWNfYmxvY2sgYmIsCiAgICAg ICBpZiAoIXN0bXQpCiAJYnJlYWs7CiAKKyAgICAgIGlmICh3YXJuaW5nX3N1cHByZXNzZWRf cCAoc3RtdCwgT1BUX1dkYW5nbGluZ19wb2ludGVyXykpCisJY29udGludWU7CisKICAgICAg IGlmIChpc19naW1wbGVfY2FsbCAoc3RtdCkKIAkgICYmICEoZ2ltcGxlX2NhbGxfZmxhZ3Mg KHN0bXQpICYgKEVDRl9DT05TVCB8IEVDRl9QVVJFKSkpCiAJLyogQXZvaWQgbG9va2luZyBi ZWZvcmUgbm9uY29uc3QsIG5vbnB1cmUgY2FsbHMgc2luY2UgdGhvc2UgbWlnaHQKQEAgLTQ1 NDIsMTAgKzQ1NDUsMTYgQEAgcGFzc193YWNjZXNzOjpjaGVja19kYW5nbGluZ19zdG9yZXMg KGJhc2ljX2Jsb2NrIGJiLAogCX0KICAgICAgIGVsc2UgaWYgKFRSRUVfQ09ERSAobGhzX3Jl Zi5yZWYpID09IFNTQV9OQU1FKQogCXsKLQkgIC8qIEF2b2lkIGxvb2tpbmcgYXQgb3IgYmVm b3JlIHN0b3JlcyBpbnRvIHVua25vd24gb2JqZWN0cy4gICovCiAJICBnaW1wbGUgKmRlZl9z dG10ID0gU1NBX05BTUVfREVGX1NUTVQgKGxoc19yZWYucmVmKTsKIAkgIGlmICghZ2ltcGxl X25vcF9wIChkZWZfc3RtdCkpCisJICAgIC8qIEF2b2lkIGxvb2tpbmcgYXQgb3IgYmVmb3Jl IHN0b3JlcyBpbnRvIHVua25vd24gb2JqZWN0cy4gICovCiAJICAgIHJldHVybjsKKworCSAg dHJlZSB2YXIgPSBTU0FfTkFNRV9WQVIgKGxoc19yZWYucmVmKTsKKwkgIGlmIChERUNMX0JZ X1JFRkVSRU5DRSAodmFyKSkKKwkgICAgLyogQXZvaWQgYnktdmFsdWUgYXJndW1lbnRzIHRy YW5zZm9ybWVkIGludG8gYnktcmVmZXJlbmNlLiAgKi8KKwkgICAgY29udGludWU7CisKIAl9 CiAgICAgICBlbHNlIGlmIChUUkVFX0NPREUgKGxoc19yZWYucmVmKSA9PSBNRU1fUkVGKQog CXsKQEAgLTQ1NzgsNiArNDU4Nyw4IEBAIHBhc3Nfd2FjY2Vzczo6Y2hlY2tfZGFuZ2xpbmdf c3RvcmVzIChiYXNpY19ibG9jayBiYiwKIAkJICAgICAgInN0b3JpbmcgdGhlIGFkZHJlc3Mg b2YgbG9jYWwgdmFyaWFibGUgJXFEIGluICVxRSIsCiAJCSAgICAgIHJoc19yZWYucmVmLCBs aHMpKQogCXsKKwkgIHN1cHByZXNzX3dhcm5pbmcgKHN0bXQsIE9QVF9XZGFuZ2xpbmdfcG9p bnRlcl8pOworCiAJICBsb2NhdGlvbl90IGxvYyA9IERFQ0xfU09VUkNFX0xPQ0FUSU9OIChy aHNfcmVmLnJlZik7CiAJICBpbmZvcm0gKGxvYywgIiVxRCBkZWNsYXJlZCBoZXJlIiwgcmhz X3JlZi5yZWYpOwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9X ZGFuZ2xpbmctcG9pbnRlci03LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XZGFu Z2xpbmctcG9pbnRlci03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQzMzcyN2RkODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vV2RhbmdsaW5nLXBvaW50ZXItNy5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIFZl cmlmeSAtV2RhbmdsaW5nLXBvaW50ZXIgaXMgaXNzdWVkIG9ubHkgb25jZS4KKyAgIHsgZGct ZG8gY29tcGlsZSB9CisgICB7IGRnLW9wdGlvbnMgIi1PIC1XYWxsIiB9ICovCisKK3ZvaWQg KnA7CisKK3ZvaWQgZXNjYXBlX2dsb2JhbF93YXJuX29uY2UgKHZvaWQpCit7CisgIGludCB4 WzVdOworCisgIHAgPSAmeFszXTsgICAgICAgIC8vIHsgZGctcmVnZXhwICJcW15cblxyXF0r OiB3YXJuaW5nOiBcW15cblxyXF0rIFxcXFstV2RhbmdsaW5nLXBvaW50ZXIuP1xcXF0iICJt ZXNzYWdlIiB9Cit9CisKKwordm9pZCBlc2NhcGVfcGFyYW1fd2Fybl9vbmNlICh2b2lkICoq cCkKK3sKKyAgaW50IHhbNV07CisKKyAgKnAgPSAmeFszXTsgICAgICAgLy8geyBkZy1yZWdl eHAgIlxbXlxuXHJcXSs6IHdhcm5pbmc6IFxbXlxuXHJcXSsgXFxcWy1XZGFuZ2xpbmctcG9p bnRlci4/XFxcXSIgIm1lc3NhZ2UiIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL3dhcm4vV2RhbmdsaW5nLXBvaW50ZXItNC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvd2Fybi9XZGFuZ2xpbmctcG9pbnRlci00LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmIzZDE0NGE5ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvd2Fybi9XZGFuZ2xpbmctcG9pbnRlci00LkMKQEAgLTAsMCArMSwz NCBAQAorLyogUFIgbWlkZGxlLWVuZC8xMDQ0MzYgLSBzcHVyaW91cyAtV2RhbmdsaW5nLXBv aW50ZXIgYXNzaWduaW5nIGxvY2FsCisgICBhZGRyZXNzIHRvIGEgY2xhc3MgcGFzc2VkIGJ5 IHZhbHVlCisgICB7IGRnLWRvIGNvbXBpbGUgfQorICAgeyBkZy1vcHRpb25zICItTzEgLVdh bGwiIH0gKi8KKworc3RydWN0IFMKK3sKKyAgUyAodm9pZCAqcCk6IHAgKHApIHsgfQorICBT IChjb25zdCBTICZzKTogcCAocy5wKSB7IH0KKworICB2b2lkICpwOworfTsKKworCit2b2lk IG5vd2Fybl9hc3NpZ25fYnlfdmFsdWUgKFMgcykKK3sKKyAgaW50IGk7CisgIFMgdCAoJmkp OworICBzID0gdDsgICAgICAgICAgICAvLyB7IGRnLWJvZ3VzICItV2RhbmdsaW5nLXBvaW50 ZXIiIH0KK30KKwordm9pZCBub3dhcm5fYXNzaWduX2J5X3ZhbHVlX2FyZyAoUyBzKQorewor ICBTIHQgKCZzKTsKKyAgcyA9IHQ7ICAgICAgICAgICAgLy8geyBkZy1ib2d1cyAiLVdkYW5n bGluZy1wb2ludGVyIiB9Cit9CisKKwordm9pZCB3YXJuX2Fzc2lnbl9sb2NhbF9ieV9yZWZl cmVuY2UgKFMgJnMpCit7CisgIGludCBpOworICBTIHQgKCZpKTsKKyAgcyA9IHQ7ICAgICAg ICAgICAgLy8geyBkZy13YXJuaW5nICItV2RhbmdsaW5nLXBvaW50ZXIiIH0KK30K --------------JKPTxv3fPxMGsonMyzq5iirI--