From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by server2.sourceware.org (Postfix, from userid 48) id 05AC2389F4E7; Sun, 8 Mar 2020 16:54:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 server2.sourceware.org 05AC2389F4E7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1583687014; bh=VEUdZBdVuXx3yPMX9hzrTK24hU5ntpwDgioE7zgZkI8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=gjbfqpHz0CyW+00Q2VQmDips23qHkAk0Hwxmv45k+Z9bpLEKAFqI8VVogGKcbVBjV ZrFb3MG+NWmbt+6r28flsw2NeUqH7BJOZdus4iYi7W2kVGlRYCUpUs366CC0RvpoWE FWuqQQ7trv2poZN3FmxUrMnScpFExZ9WF6P3TE3o= From: "ppalka at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/94066] [8/9/10 Regression] ICE (starting/ending union member lifetime) in cxx_eval_bare_aggregate, at cp/constexpr.c:3790 since r6-7592 Date: Sun, 08 Mar 2020 16:54:23 +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-invalid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: ppalka at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 8.5 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-Spam-Status: No, score=-7.9 required=5.0 tests=ALL_TRUSTED, BAYES_00, GIT_PATCH_2 autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: Sun, 08 Mar 2020 17:03:34 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D94066 --- Comment #5 from Patrick Palka --- Also if we add an explicitly defaulted constructor "U() =3D default;" to U = in the original test case, then using GCC 9 /w -std=3Dc++17 we get: 94066.C:16:25: in =E2=80=98constexpr=E2=80=99 expansion of =E2=80=98foo((= &*this))=E2=80=99 94066.C:12:9: error: change of the active member of a union from =E2=80=98U= ::a=E2=80=99 to =E2=80=98U::y=E2=80=99 12 | up->y =3D 11; | ~~~~~~^~~~ 94066.C:16: confused by earlier errors, bailing out using GCC 9 /w -std=3Dc++2a compiles successfully, and we think U::y is the active member, but static_assert(u.y =3D=3D 11) fails with "error: =E2=80= =98(((int)A{42}) =3D=3D 11)=E2=80=99 is not a constant expression" using GCC trunk /w -std=3Dc++17 we get an active-member diagnostic as in GC= C 9, and the same ICE as in #c1 using GCC trunk /w -std=3Dc++2a we get same behavior as in GCC 9 /w -std=3D= c++2a=