public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/108702] [13 Regression] ICE in get_partitioning_class, at symtab.cc:2096 since r13-4161-g32d16fe9d7e347bc
Date: Sat, 04 Mar 2023 08:55:05 +0000	[thread overview]
Message-ID: <bug-108702-4-Y5DAkpBxad@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-108702-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108702

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:9d5730dee4f42e94004b38f8f4862c0b1f4d964c

commit r13-6473-g9d5730dee4f42e94004b38f8f4862c0b1f4d964c
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Sat Mar 4 09:51:31 2023 +0100

    c++: Don't defer local statics initialized with constant expressions
[PR108702]

    The stmtexpr19.C testcase used to be rejected as it has a static
    variable in statement expression in constexpr context, but as that
    static variable is initialized by constant expression, when P2647R1
    was implemented we agreed to make it valid.

    Now, as reported, the testcase compiles fine, but doesn't actually link
    because the static variable isn't defined anywhere, and with -flto ICEs
    because of this problem.  This is because we never
    varpool_node::finalize_decl those vars, the constant expression in which
    the DECL_EXPR is present for the static VAR_DECL is folded (constant
    evaluated) into just the address of the VAR_DECL.
    Now, similar testcase included below (do we want to include it in the
    testsuite too?) works fine, because in
    cp_finish_decl -> make_rtl_for_nonlocal_decl
    we have since PR70353 fix:
      /* We defer emission of local statics until the corresponding
         DECL_EXPR is expanded.  But with constexpr its function might never
         be expanded, so go ahead and tell cgraph about the variable now.  */
      defer_p = ((DECL_FUNCTION_SCOPE_P (decl)
                  && !var_in_maybe_constexpr_fn (decl))
                 || DECL_VIRTUAL_P (decl));
    and so don't defer them in constexpr/consteval functions.  The following
    patch calls rest_of_decl_compilation which make_rtl_for_nonlocal_decl
didn't
    call when encountering DECL_EXPRs of such vars during constant evaluation
    if they weren't finalized yet.

    2023-03-04  Jakub Jelinek  <jakub@redhat.com>

            PR c++/108702
            * constexpr.cc: Include toplev.h.
            (cxx_eval_constant_expression) <case DECL_EXPR>: When seeing a
local
            static initialized by constant expression outside of a constexpr
            function which has been deferred by make_rtl_for_nonlocal_decl,
            call rest_of_decl_compilation on it.

            * g++.dg/ext/stmtexpr19.C: Use dg-do link rather than dg-do
compile.

  parent reply	other threads:[~2023-03-04  8:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-07 18:36 [Bug ipa/108702] New: [13 Regression] ICE in get_partitioning_class, at symtab.cc:2096 asolokha at gmx dot com
2023-02-08 14:27 ` [Bug ipa/108702] [13 Regression] ICE in get_partitioning_class, at symtab.cc:2096 since r13-4161-g32d16fe9d7e347bc marxin at gcc dot gnu.org
2023-02-08 16:08 ` jakub at gcc dot gnu.org
2023-02-08 17:27 ` [Bug c++/108702] " jakub at gcc dot gnu.org
2023-03-04  8:55 ` cvs-commit at gcc dot gnu.org [this message]
2023-03-04  9:24 ` 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-108702-4-Y5DAkpBxad@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: link
Be 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).