]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Add self reference to define_aggregate created aggregates [PR123984]
authorJakub Jelinek <jakub@redhat.com>
Mon, 9 Feb 2026 16:54:10 +0000 (17:54 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 9 Feb 2026 16:54:10 +0000 (17:54 +0100)
commita2e2fdf2f52c0d73e63a3005db459b4fa09bec7f
tree9316271ce2754531f187f522d95476d07a346539
parent403b38e7b82cfae5fbbb825990b8a3aa7a78f476
c++: Add self reference to define_aggregate created aggregates [PR123984]

We weren't adding the DECL_SELF_REFERENCE_P TYPE_DECL to TYPE_FIELDS of
eval_define_aggregate created aggregates, which resulted in ICE in
accessible_base_p which relies on DECL_SELF_REFERENCE_P TYPE_DECL to be
present in base classes of other classes.

2026-02-09  Jakub Jelinek  <jakub@redhat.com>

PR c++/123984
* reflect.cc (eval_define_aggregate): Set TYPE_BEING_DEFINED on type
after pushclass, call build_self_reference, remove assertion that
TYPE_FIELDS (type) is NULL and instead set fields to
TYPE_FIELDS (type).

* g++.dg/reflect/define_aggregate6.C: New test.
gcc/cp/reflect.cc
gcc/testsuite/g++.dg/reflect/define_aggregate6.C [new file with mode: 0644]