From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by sourceware.org (Postfix) with ESMTPS id 068E23858D28 for ; Mon, 27 May 2024 09:11:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 068E23858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 068E23858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716801106; cv=none; b=rjnKQfr6myypJSAyQVMiWtuBQ8W9Td+HAZ7Ao2SwjotE3FRmQVo2ldveXjuC10Mct/jyRHXe9b01UrL8rAgkEmDIgFfSumTk1+sw0nEFP4Z/cBJSPBFkZpXRGB+xlUpbqaYY5+ZJQWrQlMCEhh9skYpFnkboAxnK4aTKK4KYQvM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716801106; c=relaxed/simple; bh=2ky/VVpSfOaE1+q8m8TXio2Fa1fg38Tt6WapT4F3fco=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date: From:To:Subject:MIME-Version; b=oAsc8yBZkeZBhl2zc3pIzcakum0eK3ldQPtVAylhIgUand20ynSjfqIpgLSlL+cJmiI7XnONPiGGDzHAU755xNRlVSHbPr6tPeLD72y79Dg2/3e9msLnNFOhakxa/f8ax/zETWWlwWpc1SV/Brc1N+IQeOQ4WM+b5ZSRAO36HW0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from murzim.nue2.suse.org (unknown [10.168.4.243]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E0CC021D86; Mon, 27 May 2024 09:11:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716801104; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=CYLmkMThLiRLEix2PLSKrEd+GlRBTFvsabqmzh8SO2I=; b=g0KE5mlAut3DM1mNS4CppAS0Kh+CKxfqSM8HVPeFaEuc0zFIZPhHjshT5xc/nVXaSyYzWb M3zG+gTwP7+6Ps9dH/AFKob8CIv1KXkEsFMtRSamVRYwJfpXuUEggvlWmePRA0ornJqH62 PxUp6lFc4KDLY1Ew8PTOwwE5ZG2nrHE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716801104; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=CYLmkMThLiRLEix2PLSKrEd+GlRBTFvsabqmzh8SO2I=; b=t+B3tan8UG8er5rsvVLrMXcXovPA2yq5Pr0KiStQEKDi4R0/ep57hEy8sIuTaMlwo7kA0F TKh6iJIgK76hs6Bw== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716801103; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=CYLmkMThLiRLEix2PLSKrEd+GlRBTFvsabqmzh8SO2I=; b=mKmjFNpz8f0nMD8P2IRI8pDP9RKmUYTrXjq/f5qG6gelwdL/vdaEIdoX5CsPWeEgq3cuLr AA1r2KXL/B60T1eEmGVYwv++NVupFGQvKSVC43fV/Kdz/aPvG3zL4fCOiGSZnXUMUh1kEu bEidM98EPLm85shiSpjYVQ2sH9dbaG4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716801103; h=from:from:reply-to:date:date:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=CYLmkMThLiRLEix2PLSKrEd+GlRBTFvsabqmzh8SO2I=; b=HtuKs7wrERitCG4Gj/Ji8zLRyfR+uqJSpNo8ff4xl6xzEE3gJ/1+wFqnNnHBLSp9LfVMKi bb+TmxCVgV4Gl3DA== Date: Mon, 27 May 2024 11:11:43 +0200 (CEST) From: Richard Biener To: gcc-patches@gcc.gnu.org cc: Jakub Jelinek Subject: [PATCH] tree-optimization/115232 - demangle failure during -Waccess MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Level: X-Spamd-Result: default: False [-1.79 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MISSING_MID(2.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.19)[-0.959]; MIME_GOOD(-0.10)[text/plain]; MISSING_XM_UA(0.00)[]; RCVD_COUNT_ZERO(0.00)[0]; ARC_NA(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; TO_DN_SOME(0.00)[] X-Spam-Score: -1.79 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,MISSING_MID,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: Message-ID: <20240527091143.T5LqszJAxJYapA0mn3M6MzMJtkIoMRswIPWi3D5ORJo@z> For the following testcase we fail to demangle _ZZN5OuterIvE6methodIvEEvvQ3cstITL0__EEN5InnernwEm and _ZZN5OuterIvE6methodIvEEvvQ3cstITL0__EEN5InnerdlEPv and in turn end up building NULL references. The following puts in a safeguard for faile demangling into -Waccess. Bootstrapped and tested on x86_64-unknown-linux-gnu, OK? Thanks, Richard. PR tree-optimization/115232 * gimple-ssa-warn-access.cc (new_delete_mismatch_p): Handle failure to demangle gracefully. * g++.dg/pr115232.C: New testcase. --- gcc/gimple-ssa-warn-access.cc | 2 +- gcc/testsuite/g++.dg/pr115232.C | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/pr115232.C diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc index 0cd5b6d6ef4..61f9f0f3d31 100644 --- a/gcc/gimple-ssa-warn-access.cc +++ b/gcc/gimple-ssa-warn-access.cc @@ -1762,7 +1762,7 @@ new_delete_mismatch_p (tree new_decl, tree delete_decl) void *np = NULL, *dp = NULL; demangle_component *ndc = cplus_demangle_v3_components (new_str, 0, &np); demangle_component *ddc = cplus_demangle_v3_components (del_str, 0, &dp); - bool mismatch = new_delete_mismatch_p (*ndc, *ddc); + bool mismatch = ndc && ddc && new_delete_mismatch_p (*ndc, *ddc); free (np); free (dp); return mismatch; diff --git a/gcc/testsuite/g++.dg/pr115232.C b/gcc/testsuite/g++.dg/pr115232.C new file mode 100644 index 00000000000..e1d96d8f899 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr115232.C @@ -0,0 +1,25 @@ +// { dg-do compile } +// { dg-require-effective-target c++20 } + +using size_t = decltype(sizeof(0)); +template +static constexpr bool cst = true; +template +struct Outer +{ + Outer(); + template void method() requires cst + { + struct Inner + { + static void* operator new(size_t){return new char;} + static void operator delete(void*){} + Outer t; + }; + new Inner; + } +}; +void f() +{ + Outer{}.method(); +} -- 2.35.3