public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "jakub at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/114426] [14 regression] ICE when building log4cxx on arm (cxx_eval_call_expression, at cp/constexpr.cc:3242) since r14-6507 Date: Fri, 22 Mar 2024 15:50:17 +0000 [thread overview] Message-ID: <bug-114426-4-9E3d9qgIYm@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-114426-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114426 --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- It is indeed the assert added in that patch. When cp_fold_function is called on the _ZN12ConfiguratorD0Ev body which contains Configurator::~Configurator(this); call Now, maybe_constant_value is called on this in: /* Invoke maybe_constant_value for functions declared constexpr and not called with AGGR_INIT_EXPRs. TODO: Do constexpr expansion of expressions where the call itself is not constant, but the call followed by an INDIRECT_REF is. */ if (callee && DECL_DECLARED_CONSTEXPR_P (callee) && !flag_no_inline) { mce_value manifestly_const_eval = mce_unknown; if (flags & ff_mce_false) /* Allow folding __builtin_is_constant_evaluated to false during constexpr evaluation of this call. */ manifestly_const_eval = mce_false; r = maybe_constant_value (x, /*decl=*/NULL_TREE, manifestly_const_eval); } also on targets other than arm, but except on arm the maybe_constant_value -> cxx_eval_outermost_constant_expr call returns very quickly, because the call has VOID_TYPE_P and constexpr_dtor is false and the dtor isn't DECL_IMMEDIATE_FUNCTION_P, so it /* Calls to immediate functions returning void need to be evaluated. */ tree fndecl = cp_get_callee_fndecl_nofold (t); if (fndecl == NULL_TREE || !DECL_IMMEDIATE_FUNCTION_P (fndecl)) return t; The difference on arm is that the CALL_EXPR doesn't have VOID_TYPE_P type, but pointer to the class, so it evaluates it and triggers the assertion. Now, if all we want to do is get the same behavior on arm as on other targets, perhaps we could avoid doing that maybe_constant_value in cp_fold if DECL_DESTRUCTOR_P (callee) or perhaps even DECL_CONSTRUCTOR_P (callee).
next prev parent reply other threads:[~2024-03-22 15:50 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-22 5:11 [Bug c++/114426] New: [14 regression] ICE when building log4cxx on arm (cxx_eval_call_expression, at cp/constexpr.cc:3242) sjames at gcc dot gnu.org 2024-03-22 5:12 ` [Bug c++/114426] " sjames at gcc dot gnu.org 2024-03-22 5:13 ` sjames at gcc dot gnu.org 2024-03-22 5:14 ` sjames at gcc dot gnu.org 2024-03-22 6:51 ` rguenth at gcc dot gnu.org 2024-03-22 7:26 ` pinskia at gcc dot gnu.org 2024-03-22 8:01 ` sjames at gcc dot gnu.org 2024-03-22 12:36 ` law at gcc dot gnu.org 2024-03-22 15:11 ` [Bug c++/114426] [14 regression] ICE when building log4cxx on arm (cxx_eval_call_expression, at cp/constexpr.cc:3242) since r14-6507 jakub at gcc dot gnu.org 2024-03-22 15:50 ` jakub at gcc dot gnu.org [this message] 2024-03-22 15:52 ` jakub at gcc dot gnu.org 2024-03-23 8:06 ` jakub at gcc dot gnu.org 2024-04-10 8:02 ` rguenth at gcc dot gnu.org 2024-04-12 9:59 ` jakub at gcc dot gnu.org 2024-04-12 17:58 ` cvs-commit at gcc dot gnu.org 2024-04-12 17:58 ` jakub at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-114426-4-9E3d9qgIYm@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).