From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by sourceware.org (Postfix) with ESMTPS id F06D43858D37 for ; Mon, 9 Jan 2023 12:13:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F06D43858D37 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-x230.google.com with SMTP id n5so8104635ljc.9 for ; Mon, 09 Jan 2023 04:13:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wwbmn02hEEXduG8t9WS7Ps/fmtqSd2HKcJjDhVdjjhM=; b=AmB1Rz6+OpCxEOS7hDFx04SBs5SPUyMGLcCmTl/fzNwnXKHTnmCnmx/Suu3t4qY5H3 Ny96a31KziVNSVscYIXeKHJhn0nEKtebmo4kGuQltQy+STwXGIhm+nQW3pJhAyCQunZs FC9ZmzZwI+v43u8zP7Cc+YpdKqO7g2hG/HpIl28hL/JI5kw62E1YkkQnkMHTzwleD+eZ Mhc7+/qOmL2Lf1wUS7rkQYGAgpxn1gGa3iDmnoqBD1etBfz3ezdHkE4JGJSNgjJsDSL5 1WnBootPFAIutAJm4+AZsbb5Rut5ahCxv4E8LqY1qoUWYr04tHgnPypO3gYUcZV8YPOe 7bsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding: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=wwbmn02hEEXduG8t9WS7Ps/fmtqSd2HKcJjDhVdjjhM=; b=vPsYxXX1qlsNeH67GdSNG3uZNI/tshfZ/sZ5OWyJQaQFW5Qlxow2kRlPXz8ToTSIwl SwBGPuoPLEgkj0+1DBdZwNmCQZLBazc3GaKv7AMH5f4u1Gx8rFVvh8wtsnADju4ocoTX fH7JPMfEOa/ekrMchCzCbq57PFbLt1p4iP75ERVwMV9E1jGjfV4LbtGIjPBmFQckN/aj QbcsD2rKlTs9F9B9d/4zorNjTdgWUXj75/8gHDYpYYd2542FEIzpoONqfb5sijWRoiZQ ucQ31h/UU4H3O3QSihqCTU+khslEpfA29R5O8VXMg3uR3T04Y+WzknG+9LjfvXjyRyvD HOeQ== X-Gm-Message-State: AFqh2koKOrQTxSO20Z0lM0KRROqJTuQ71ttlR7Or1fZI0TDKvc30LpoG ifAO/QEH3lZMhCqFJu8QuFa9y8K44O20oZ6mtOk= X-Google-Smtp-Source: AMrXdXscd2nGxYtW8teVXbJ1H7NNG+mrrImmxZw0cGfL/51zIZ1M/UTH/Ez8yb7Fp3UO9xjT+CgRrrpg0qfeoKgObDA= X-Received: by 2002:a2e:8516:0:b0:283:5322:e7c4 with SMTP id j22-20020a2e8516000000b002835322e7c4mr146503lji.448.1673266431249; Mon, 09 Jan 2023 04:13:51 -0800 (PST) MIME-Version: 1.0 References: <7cb85a5f-98c7-a398-d7ec-40a170039830@suse.cz> In-Reply-To: <7cb85a5f-98c7-a398-d7ec-40a170039830@suse.cz> From: Richard Biener Date: Mon, 9 Jan 2023 13:13:37 +0100 Message-ID: Subject: Re: [PATCH] hash: do not insert deleted value to a hash_set To: =?UTF-8?Q?Martin_Li=C5=A1ka?= Cc: gcc-patches@gcc.gnu.org, Alexandre Oliva Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.0 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 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: On Mon, Jan 9, 2023 at 11:53 AM Martin Li=C5=A1ka wrote: > > Hi. > > After the new hash_set checking code, we face an issue where deleted valu= e > is added to a hash_set. Fix it. > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? OK > Thanks, > Martin > > PR lto/108330 > > gcc/ChangeLog: > > * lto-cgraph.cc (compute_ltrans_boundary): Do not insert > NULL (deleleted value) to a hash_set. > > gcc/testsuite/ChangeLog: > > * g++.dg/ipa/pr108830.C: New test. > --- > gcc/lto-cgraph.cc | 3 ++- > gcc/testsuite/g++.dg/ipa/pr108830.C | 20 ++++++++++++++++++++ > 2 files changed, 22 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/g++.dg/ipa/pr108830.C > > diff --git a/gcc/lto-cgraph.cc b/gcc/lto-cgraph.cc > index eef5ea1d061..805c7855eb3 100644 > --- a/gcc/lto-cgraph.cc > +++ b/gcc/lto-cgraph.cc > @@ -918,7 +918,8 @@ compute_ltrans_boundary (lto_symtab_encoder_t in_enco= der) > vec targets > =3D possible_polymorphic_call_targets > (edge, &final, &cache_token); > - if (!reachable_call_targets.add (cache_token)) > + if (cache_token !=3D NULL > + && !reachable_call_targets.add (cache_token)) > { > for (i =3D 0; i < targets.length (); i++) > { > diff --git a/gcc/testsuite/g++.dg/ipa/pr108830.C b/gcc/testsuite/g++.dg/i= pa/pr108830.C > new file mode 100644 > index 00000000000..96656f67e4f > --- /dev/null > +++ b/gcc/testsuite/g++.dg/ipa/pr108830.C > @@ -0,0 +1,20 @@ > +// PR lto/108330 > +// { dg-do compile } > + > +class A { > + virtual unsigned long m_fn1() const; > + virtual int &m_fn2(unsigned long) const; > +}; > +class C : A { > +public: > + int &m_fn2(unsigned long) const; > + unsigned long m_fn1() const; > +}; > +class B { > + void m_fn3(const A &, const int &, const C &, int &) const; > +}; > +void B::m_fn3(const A &, const int &, const C &, int &) const { > + C &a(a); > + for (long b =3D 0; a.m_fn1(); b++) > + a.m_fn2(0); > +} > -- > 2.39.0 >