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

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:ef529765234bea7893bd56f3ab3a2da7695f6b21

commit r10-7669-gef529765234bea7893bd56f3ab3a2da7695f6b21
Author: Jason Merrill <ja...@redhat.com>
Date:   Wed Apr 8 23:59:30 2020 -0400

    c++: constexpr static data member instantiation [PR94523]

    Here due to my recent change to store_init_value we were expanding the
    initializer of aw knowing that we were initializing aw.  When
    cxx_eval_call_expression finished the constructor, it wanted to look up the
    value of aw to set TREE_READONLY on it, but we haven't set DECL_INITIAL
yet,
    so decl_constant_value tried to instantiate the initializer again.  And
    infinite recursion.  Stopped by optimizing the case of asking for the value
    of ctx->object, which is ctx->value.  It also would have worked to look in
    the values hash table, so let's move that up before decl_constant_value as
    well.

    gcc/cp/ChangeLog
    2020-04-09  Jason Merrill  <ja...@redhat.com>

            PR c++/94523
            * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: Look at
            ctx->object and ctx->global->values first.

Reply via email to