From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id C76B83856949; Thu, 16 Jun 2022 11:02:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C76B83856949 From: "redi at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/105996] [12/11/12/13 Regression] reinterpret_cast in constexpr failure creating a pair with a function pointer of class parent Date: Thu, 16 Jun 2022 11:02:36 +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: 12.1.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: redi at gcc dot gnu.org X-Bugzilla-Status: NEW 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: short_desc cf_reconfirmed_on bug_status everconfirmed cf_known_to_fail cc cf_known_to_work 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: Thu, 16 Jun 2022 11:02:36 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D105996 Jonathan Wakely changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|reinterpret_cast in |[12/11/12/13 Regression] |constexpr failure creating |reinterpret_cast in |a pair with a function |constexpr failure creating |pointer of class parent |a pair with a function | |pointer of class parent Last reconfirmed| |2022-06-16 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Known to fail| |10.3.0, 11.3.0, 12.1.0, | |13.0, 8.1.0 CC| |jakub at gcc dot gnu.org Known to work| |7.5.0 --- Comment #1 from Jonathan Wakely --- Reduced: template constexpr int make_pair(T&&, U&&) { return= 0; } struct A { void CB() {} }; struct B : public A { void Test() { using MyCB =3D void (B::*)(); static constexpr auto p =3D make_pair(1, &B::CB); } }; 105996.C: In member function 'void B::Test()': 105996.C:10:53: error: a reinterpret_cast is not a constant expression static constexpr auto p =3D make_pair(1, &B::CB); ^~ Started to fail some time before r256448, probably=20 commit e99ef40892b598eeb3fa496cc472e111675d7f6c Author: Jakub Jelinek=20 Date: Wed Jan 10 16:59:09 2018 re PR c++/81327 (cast to void* does not suppress -Wclass-memaccess) PR c++/81327 * call.c (maybe_warn_class_memaccess): Add forward declaration. Change last argument from tree * to const vec *, adjust args uses and check number of operands too. Don't strip away a= ny nops. Use maybe_constant_value when looking for INTEGER_CST ar= gs. Deal with src argument not having pointer type. Check tree_fits_uhwi_p before calling tree_to_uhwi. Remove useless test. (build_over_call): Call maybe_warn_class_memaccess here on the original arguments. (build_cxx_call): Rather than here on converted arguments. * g++.dg/Wclass-memaccess-2.C: Don't expect a warning when explicitly cast to void *. From-SVN: r256440=