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++/108975] [10/11 Regression] ICE on constexpr variable used as nontype template since r9-5473-ge32fc4499f863f
Date: Tue, 25 Apr 2023 19:59:44 +0000	[thread overview]
Message-ID: <bug-108975-4-MhTrVf0OQo@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-108975-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #17 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppalka@gcc.gnu.org>:

https://gcc.gnu.org/g:3d674e29d7f89bf93fcfcc963ff0248c6347586d

commit r14-228-g3d674e29d7f89bf93fcfcc963ff0248c6347586d
Author: Patrick Palka <ppalka@redhat.com>
Date:   Tue Apr 25 15:59:22 2023 -0400

    c++: value dependence of by-ref lambda capture [PR108975]

    We are still ICEing on the generic lambda version of the testcase from
    this PR, even after r13-6743-g6f90de97634d6f, due to the by-ref capture
    of the constant local variable 'dim' being considered value-dependent
    when regenerating the lambda (at which point processing_template_decl is
    set since the lambda is generic), which prevents us from constant folding
    its uses.  Later during prune_lambda_captures we end up not thoroughly
    walking the body of the lambda and overlook the (non-folded) uses of
    'dim' within the array bound and using-decls.

    We could fix this by making prune_lambda_captures walk the body of the
    lambda more thoroughly so that it finds these uses of 'dim', but ideally
    we should be able to constant fold all uses of 'dim' ahead of time and
    prune the implicit capture after all.

    To that end this patch makes value_dependent_expression_p return false
    for such by-ref captures of constant local variables, allowing their
    uses to get constant folded ahead of time.  It seems we just need to
    disable the predicate's conservative early exit for reference variables
    (added by r5-5022-g51d72abe5ea04e) when DECL_HAS_VALUE_EXPR_P.  This
    effectively makes us treat by-value and by-ref captures more consistently
    when it comes to value dependence.

            PR c++/108975

    gcc/cp/ChangeLog:

            * pt.cc (value_dependent_expression_p) <case VAR_DECL>:
            Suppress conservative early exit for reference variables
            when DECL_HAS_VALUE_EXPR_P.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp0x/lambda/lambda-const11a.C: New test.

  parent reply	other threads:[~2023-04-25 19:59 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-28 20:57 [Bug c++/108975] New: Internal compiler error on constexpr variable used as nontype template samuelpmish at gmail dot com
2023-02-28 20:58 ` [Bug c++/108975] " pinskia at gcc dot gnu.org
2023-02-28 21:10 ` samuelpmish at gmail dot com
2023-02-28 21:11 ` pinskia at gcc dot gnu.org
2023-02-28 21:11 ` pinskia at gcc dot gnu.org
2023-02-28 21:35 ` pinskia at gcc dot gnu.org
2023-03-01 10:54 ` pinskia at gcc dot gnu.org
2023-03-01 10:59 ` [Bug c++/108975] [10/11/12/13 Regression] " pinskia at gcc dot gnu.org
2023-03-01 11:07 ` pinskia at gcc dot gnu.org
2023-03-01 11:10 ` pinskia at gcc dot gnu.org
2023-03-01 15:26 ` samuelpmish at gmail dot com
2023-03-01 15:51 ` ppalka at gcc dot gnu.org
2023-03-02 21:35 ` [Bug c++/108975] [10/11/12/13 Regression] ICE on constexpr variable used as nontype template since r9-5473-ge32fc4499f863f ppalka at gcc dot gnu.org
2023-03-03 20:32 ` mpolacek at gcc dot gnu.org
2023-03-17 21:24 ` jason at gcc dot gnu.org
2023-03-17 23:33 ` cvs-commit at gcc dot gnu.org
2023-04-18 20:46 ` [Bug c++/108975] [10/11/12 " cvs-commit at gcc dot gnu.org
2023-04-21 20:28 ` [Bug c++/108975] [10/11 " cvs-commit at gcc dot gnu.org
2023-04-22  0:23 ` cvs-commit at gcc dot gnu.org
2023-04-25 19:59 ` cvs-commit at gcc dot gnu.org [this message]
2023-07-07 10:45 ` [Bug c++/108975] [11 " rguenth at gcc dot gnu.org
2023-12-19 20:00 ` jason at gcc dot gnu.org
2023-12-19 20:16 ` ppalka at gcc dot gnu.org
2023-12-20  1:53 ` cvs-commit at gcc dot gnu.org
2023-12-20  1:55 ` cvs-commit at gcc dot gnu.org
2023-12-20  1:56 ` cvs-commit at gcc dot gnu.org
2023-12-20  1:59 ` ppalka 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-108975-4-MhTrVf0OQo@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).