From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 4DF2D3858D1E; Wed, 29 Mar 2023 15:08:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4DF2D3858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1680102528; bh=ZyALA4Og9BxvtL9kYq/lZRB2cgLx1E9/Sv/9mZeau5Q=; h=From:To:Subject:Date:In-Reply-To:References:From; b=qnaUNNrs7v+ehxXQzQepQY5poqvIWLNPvNjR8S8BJeswefTgm/XXoCW8P3Hig70Ne BAF6Y4OtZNX6+8cKbIAAQtcsoUKPdUJ7LxpGAM4h2nJAeUBFRod2AgivlnOd72VO7t VuuDb5+IYk2VtC9XjMUMv550zCAvysSJigTLSX3M= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug d/109231] [13 regression] Comparison failure in libphobos/libdruntime/rt/util/typeinfo.o Date: Wed, 29 Mar 2023 15:08:48 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: d X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: build X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: ibuclaw at gdcproject dot org X-Bugzilla-Target-Milestone: 13.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D109231 --- Comment #25 from Jakub Jelinek --- (In reply to ro@CeBiTec.Uni-Bielefeld.DE from comment #24) > > --- Comment #23 from Jakub Jelinek --- > [...] > > Perhaps try to undo my patch in a different way, like > > --- gcc/tree-inline.cc 2023-03-17 18:59:50.226199917 +0100 > > +++ gcc/tree-inline.cc 2023-03-29 12:47:21.546947442 +0200 > > @@ -2785,7 +2785,7 @@ initialize_cfun (tree new_fndecl, tree c > > gimple_register_cfg_hooks (); > > > > /* Get clean struct function. */ > > - push_struct_function (new_fndecl, true); > > + push_struct_function (new_fndecl, false); > > targetm.target_option.relayout_function (new_fndecl); > > > > /* We will rebuild these, so just sanity check that they are empty. = */ > > or > > --- gcc/tree-inline.cc 2023-03-17 18:59:50.226199917 +0100 > > +++ gcc/tree-inline.cc 2023-03-29 12:49:16.580255668 +0200 > > @@ -2786,7 +2786,11 @@ initialize_cfun (tree new_fndecl, tree c > > > > /* Get clean struct function. */ > > push_struct_function (new_fndecl, true); > > + relayout_decl (DECL_RESULT (new_fndecl)); > > + for (tree parm =3D DECL_ARGUMENTS (new_fndecl); parm; parm =3D DECL_= CHAIN > > (parm)) > > + relayout_decl (parm); > > targetm.target_option.relayout_function (new_fndecl); > > + aggregate_value_p (DECL_RESULT (new_fndecl), new_fndecl); > > > > /* We will rebuild these, so just sanity check that they are empty. = */ > > gcc_assert (VALUE_HISTOGRAMS (cfun) =3D=3D NULL); > > and see if that changes anything? Of course both of those patches brea= k the > > PR105554 > > again. Or if the latter helps, try to comment out the different parts = of it > > too. >=20 > So far, I've tried both variants and in each case, the comparison > failure is gone. Given that the reproducers weren't reliable, I'm afraid it would take at le= ast 2-3 runs to get something that says something. Anyway, as I said for the second version, it would be nice to also try subvariants: // relayout_decl (DECL_RESULT (new_fndecl)); for (tree parm =3D DECL_ARGUMENTS (new_fndecl); parm; parm =3D DECL_CHAIN= (parm)) relayout_decl (parm); targetm.target_option.relayout_function (new_fndecl); // aggregate_value_p (DECL_RESULT (new_fndecl), new_fndecl); and relayout_decl (DECL_RESULT (new_fndecl)); // for (tree parm =3D DECL_ARGUMENTS (new_fndecl); parm; parm =3D DECL_CHA= IN (parm)) // relayout_decl (parm); targetm.target_option.relayout_function (new_fndecl); // aggregate_value_p (DECL_RESULT (new_fndecl), new_fndecl); and // relayout_decl (DECL_RESULT (new_fndecl)); // for (tree parm =3D DECL_ARGUMENTS (new_fndecl); parm; parm =3D DECL_CHA= IN (parm)) // relayout_decl (parm); targetm.target_option.relayout_function (new_fndecl); aggregate_value_p (DECL_RESULT (new_fndecl), new_fndecl); so see if the comparison failure is fixed by the result relayout, or by argument relayout or by the aggregate_value_p call actually having some side-effects other than return value.=