From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 1F4E2385DC02; Wed, 1 Apr 2020 11:00:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1F4E2385DC02 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1585738808; bh=8Z8SfF+GNRaGf9v5mCxkKzGWoXH7KcXSB4jL44oj+Fs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=jW18d8KswuUuJsPUUTqazaRnD76haLQAfGNoEtmrNe/pRvh8p5rIUAAPM/RfzZvhm xh/3w8IdQRYhgcvCeMTeSgkm8lNNIuBrNY5ogphatqNUyg/KaBn2F37NYVvWp/c+cv 9s9JbCydoHb8wK3PPj8OiUSKpkXuCPNwTtb80S2k= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/94426] [10 Regression] ICE in mangle_decl with -flto Date: Wed, 01 Apr 2020 11:00:07 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 10.0 X-Bugzilla-Keywords: ice-on-valid-code, lto X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 10.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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Apr 2020 11:00:08 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D94426 --- Comment #2 from Jakub Jelinek --- Adjusted testcase that ICEs already starting with the r10-7243 commit, again -O2 -flto: template struct b { static constexpr int c =3D a; }; template using d =3D b; template auto ad() -> decltype(0); struct m { d())> e; }; struct n : m { typedef decltype(e) ab; }; template using aj =3D int; class C { void q(); int bq; }; template using bz =3D typename by::template bz; namespace ca { struct r { template using bz =3D cc; }; template using cd =3D bz; namespace ce { struct s { template s(bj); }; struct t { bool c; }; t ci(void *, s); } template aj cl; template bool f; template constexpr bool destructible =3D n::ab ::c; template constexpr bool cp =3D destructible; template constexpr bool cq =3D cp; template constexpr bool copyable =3D cq; template constexpr bool cr =3D copyable; } namespace cs { using namespace ca; namespace ce { template using da =3D cy; } template using da =3D ce::da<>; template bool db =3D ca::ce::ci(nullptr, [](auto g) -> decltype(cl= >>) {}).c; template constexpr bool dd =3D cr; template constexpr bool de =3D dd; template constexpr bool h =3D de; template constexpr bool df =3D h; template bool dj =3D db; namespace ce { template struct H; } template using dn =3D ce::H
; template constexpr bool i =3D df; struct { template auto operator()(cx, j, cc, k) -> cd && dj, cc= >>> { while (1); } template void operator()(l, cc p2, k u) { (*this)(0, 0, p2, u); } } o; } int p; void C::q() { cs::o(bq, p, [] {}); } The difference from the #c0 testcase is: -template using bz =3D typename by::bz; +template using bz =3D typename by::template bz;=