diff options
author | Jason Merrill <jason@redhat.com> | 2020-04-08 23:59:30 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2020-04-09 17:34:16 -0400 |
commit | ef529765234bea7893bd56f3ab3a2da7695f6b21 (patch) | |
tree | 8c1d3602bc7bd39287c7329c91ac1bc9790146cb /gcc/tree-vectorizer.c | |
parent | 3fd1c229ad10fda68318882329568f400a38fb6d (diff) | |
download | gcc-ef529765234bea7893bd56f3ab3a2da7695f6b21.zip gcc-ef529765234bea7893bd56f3ab3a2da7695f6b21.tar.gz gcc-ef529765234bea7893bd56f3ab3a2da7695f6b21.tar.bz2 |
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 <jason@redhat.com>
PR c++/94523
* constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: Look at
ctx->object and ctx->global->values first.
Diffstat (limited to 'gcc/tree-vectorizer.c')
0 files changed, 0 insertions, 0 deletions