From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id E73C03858404; Thu, 12 Oct 2023 15:11:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E73C03858404 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1697123517; bh=9CDbTnC4l9sURbzlqsUBQBrMqisFUohnbvd6TJ/Qdak=; h=From:To:Subject:Date:In-Reply-To:References:From; b=P1bkGOoD9Z2PTIlBJLS8txTpmEiZ4aJIAoP5BwFWBjDj6Lg3JlU8mmvAgI1+0RjQW WzmM8D5br3LexAK7iot0YBbTyoJ3tlCAnF2/uJ4P371DIgcGSp0Dt5zGtY9vFWZfk+ H9o+Am+jvqBElQmKdQWt3rO5kZ6WtDYxYa8dfYsM= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug bootstrap/111787] [14 regression] r14-4592-g0d00385eaf72cc breaks build Date: Thu, 12 Oct 2023 15:11:57 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: bootstrap X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: 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: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- 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=3D111787 --- Comment #1 from Jakub Jelinek --- Does 2023-10-12 Jakub Jelinek PR bootstrap/111787 * tree.h (wi::int_traits ::needs_write_val_arg): N= ew static data member. (int_traits >::needs_write_val_arg): Likewise. (wi::ints_for): Provide separate partial specializations for generic_wide_int > and INL_CONST_PRECISION or that and CONST_PRECISION, rather than using int_traits >::precision_type as the second templ= ate argument. * rtl.h (wi::int_traits ::needs_write_val_arg): New static data member. * double-int.h (wi::int_traits ::needs_write_val_arg): Likewise. --- gcc/tree.h.jj 2023-10-12 16:01:04.000000000 +0200 +++ gcc/tree.h 2023-10-12 16:52:51.977954615 +0200 @@ -6237,6 +6237,7 @@ namespace wi static const enum precision_type precision_type =3D VAR_PRECISION; static const bool host_dependent_precision =3D false; static const bool is_sign_extended =3D false; + static const bool needs_write_val_arg =3D false; }; template @@ -6262,6 +6263,7 @@ namespace wi =3D N =3D=3D ADDR_MAX_PRECISION ? INL_CONST_PRECISION : CONST_PRECIS= ION; static const bool host_dependent_precision =3D false; static const bool is_sign_extended =3D true; + static const bool needs_write_val_arg =3D false; static const unsigned int precision =3D N; }; @@ -6293,8 +6295,14 @@ namespace wi tree_to_poly_wide_ref to_poly_wide (const_tree); template - struct ints_for >, - int_traits >::precision_type> + struct ints_for >, INL_CONST_PRECIS= ION> + { + typedef generic_wide_int > extended; + static extended zero (const extended &); + }; + + template + struct ints_for >, CONST_PRECISION> { typedef generic_wide_int > extended; static extended zero (const extended &); @@ -6532,8 +6540,15 @@ wi::to_poly_wide (const_tree t) template inline generic_wide_int > wi::ints_for >, - wi::int_traits >::precision_type - >::zero (const extended &x) + wi::INL_CONST_PRECISION>::zero (const extended &x) +{ + return build_zero_cst (TREE_TYPE (x.get_tree ())); +} + +template +inline generic_wide_int > +wi::ints_for >, + wi::CONST_PRECISION>::zero (const extended &x) { return build_zero_cst (TREE_TYPE (x.get_tree ())); } --- gcc/rtl.h.jj 2023-09-29 22:04:44.463012421 +0200 +++ gcc/rtl.h 2023-10-12 16:54:59.915240074 +0200 @@ -2270,6 +2270,7 @@ namespace wi /* This ought to be true, except for the special case that BImode is canonicalized to STORE_FLAG_VALUE, which might be 1. */ static const bool is_sign_extended =3D false; + static const bool needs_write_val_arg =3D false; static unsigned int get_precision (const rtx_mode_t &); static wi::storage_ref decompose (HOST_WIDE_INT *, unsigned int, const rtx_mode_t &); --- gcc/double-int.h.jj 2023-10-12 16:01:04.260164202 +0200 +++ gcc/double-int.h 2023-10-12 16:53:41.401292272 +0200 @@ -442,6 +442,7 @@ namespace wi { static const enum precision_type precision_type =3D INL_CONST_PRECISIO= N; static const bool host_dependent_precision =3D true; + static const bool needs_write_val_arg =3D false; static const unsigned int precision =3D HOST_BITS_PER_DOUBLE_INT; static unsigned int get_precision (const double_int &); static wi::storage_ref decompose (HOST_WIDE_INT *, unsigned int, fix this? It works for me in stage3 gcc subdir, but that worked fine without it too (= I've been using g++ 12 as stage1 compiler).=