]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: constexpr VEC_INIT_EXPR [PR118285]
authorJason Merrill <jason@redhat.com>
Tue, 28 Jan 2025 18:11:50 +0000 (13:11 -0500)
committerJason Merrill <jason@redhat.com>
Tue, 28 Jan 2025 22:19:02 +0000 (17:19 -0500)
commitc3b0b98b3ba57840ab2cfbc9d44d001c1e9167bf
treee25adef3450b177922fb415e9d97db857fcbb13d
parentd0f230adf0e888d9218a123ac620c9a5b3020c2d
c++: constexpr VEC_INIT_EXPR [PR118285]

cxx_eval_vec_init_1 was doing the wrong thing for an array of
self-referential class type; just evaluating the TARGET_EXPR initializer
creates a new object that refers to the TARGET_EXPR_SLOT, if we want it to
refer properly to the initialization target we need to provide it.

PR c++/118285

gcc/cp/ChangeLog:

* constexpr.cc (cxx_eval_vec_init_1): Build INIT_EXPR for
initializing a class.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/initlist-opt7.C: New test.
gcc/cp/constexpr.cc
gcc/testsuite/g++.dg/cpp0x/initlist-opt7.C [new file with mode: 0644]