From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id 287BB3954C0B for ; Tue, 15 Jun 2021 10:58:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 287BB3954C0B Received: by mail-pf1-x435.google.com with SMTP id x16so8758726pfa.13 for ; Tue, 15 Jun 2021 03:58:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1xVrvi5Bh0IQMWrs26z3ZTMMCtJVB9l3sMhAb5krrys=; b=lYIPatjE/PQYH+N8aC4gmTKwyTw43Wtjp4K2TAQEvQs+PCN3w6k3OgDN7ymJHms/w2 /H/+vgkOdSC6dhFkHQHhS264c00fEgtSDqTHwj44BGZIlIH0lq2sYoytHBTJd1rogKue fwtQ38D/cXc9n5X3I/L2CD9ZoU2nC2xHx7VndDFUTFm7IAEXWTSJp/FIrInQ5GPwlq4M 04CIe6lztFSM0Dm9MIbh7wpH81CVieZAAvkuVZf77TZu5ATLutarI44xFNTBgVoio8FW omxyNM2q4srOaXvlJR/sCUaLRd/jMVATZ6OznHCWe6E7rqOyi2oz0EacdSiI5ITizoTK QcsQ== X-Gm-Message-State: AOAM531lcM/7kaYGlWE0/yL0wA8uadi8m450xriYWZ/2wx1QQENmTqT3 3/diftMupsFHWhYZ44vr1TbsHBqYkCf6JtKqu/APfA== X-Google-Smtp-Source: ABdhPJxzpawu0JY62dCckpwWQw0jonClbTN+M23uN3bt+H+ypiyj7MdlkbIVo5a/5zSQW8dNlCrfpn8NccAQhu9PWvw= X-Received: by 2002:a63:5064:: with SMTP id q36mr17177837pgl.196.1623754703025; Tue, 15 Jun 2021 03:58:23 -0700 (PDT) MIME-Version: 1.0 References: <6ccb6e6b-61b4-822b-d291-d2712192758e@gmail.com> <2f42cb20-30c2-43ef-1084-5cde5250fa2c@gmail.com> In-Reply-To: <2f42cb20-30c2-43ef-1084-5cde5250fa2c@gmail.com> From: Christophe Lyon Date: Tue, 15 Jun 2021 12:58:12 +0200 Message-ID: Subject: Re: [PATCH] teach compute_objsize about placement new (PR 100876) To: Martin Sebor Cc: Marek Polacek , gcc-patches Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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, 15 Jun 2021 10:58:25 -0000 Hi, On Tue, 15 Jun 2021 at 00:58, Martin Sebor via Gcc-patches wrote: > > On 6/2/21 3:46 PM, Marek Polacek wrote: > > On Wed, Jun 02, 2021 at 03:40:49PM -0600, Martin Sebor via Gcc-patches wrote: > >> + if (!gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) > >> + { > >> + /* See if this is a call to placement new. */ > >> + if (!fn > >> + || !DECL_IS_OPERATOR_NEW_P (fn) > >> + || DECL_IS_REPLACEABLE_OPERATOR_NEW_P (fn)) > >> + return NULL_TREE; > >> + > >> + tree fname = DECL_ASSEMBLER_NAME (fn); > >> + const char *name = IDENTIFIER_POINTER (fname); > >> + if (strcmp (name, "_ZnwmPv") // ordinary form > >> + && strcmp (name, "_ZnamPv")) // array form > >> + return NULL_TREE; > > > > Not a review, but you can use id_equal here and simplify things. > > Okay, done. > On arm the new test Wmismatched-new-delete-4.C fails: /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C: In function 'void nowarn_placement_new()': /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:16:8: warning: 'void free(void*)' called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete] /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:16:42: note: returned from 'void* operator new(unsigned int, void*)' /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C: In function 'void nowarn_placement_array_new()': /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:21:8: warning: 'void free(void*)' called on pointer returned from a mismatched allocation function [-Wmismatched-new-delete] /gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-4.C:21:8: note: returned from 'void* operator new [](unsigned int, void*)' FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for bogus messages, line 16) FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for bogus messages, line 21) FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for warnings, line 29) FAIL: g++.dg/warn/Wmismatched-new-delete-4.C -std=gnu++98 (test for warnings, line 36) and Wstringop-overflow-7.C: FAIL: g++.dg/warn/Wstringop-overflow-7.C -std=gnu++98 (test for warnings, line 23) FAIL: g++.dg/warn/Wstringop-overflow-7.C -std=gnu++98 (test for warnings, line 40) PASS: g++.dg/warn/Wstringop-overflow-7.C -std=gnu++98 (test for excess errors) (no warning emitted) Can you check? Thanks, Christophe > Thanks > Martin