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.