https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125336
Bug ID: 125336
Summary: [13/14/15/16/17] ICE in get_or_insert_ctor_field with
empty [[no_unique_address]] member
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: mpolacek at gcc dot gnu.org
Target Milestone: ---
```
struct S{ };
constexpr S& f (S&);
union W {
[[no_unique_address]] S v;
};
struct R { W w; };
S s;
auto x = R{{ f(s) }};
```
$ ./cc1plus -quiet newwpr.C
newwpr.C:12:20: internal compiler error: Segmentation fault
12 | auto x = R{{ f(s) }};
| ^
0x3244698 internal_error(char const*, ...)
/home/mpolacek/src/gcc/gcc/diagnostic-global-context.cc:787
0x12eea92 crash_signal
/home/mpolacek/src/gcc/gcc/toplev.cc:325
0x7fdcf913928f ???
/usr/src/debug/glibc-2.42-12.fc43.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x40322f contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
/home/mpolacek/src/gcc/gcc/tree.h:3932
0x4996f5 get_or_insert_ctor_field
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:5631
0x49e69e cxx_eval_bare_aggregate
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:6848
0x4ad070 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:10083
0x49e736 cxx_eval_bare_aggregate
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:6857
0x4ad070 cxx_eval_constant_expression(constexpr_ctx const*, tree_node*,
value_cat, bool*, bool*, tree_node**)
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:10083
0x4b26e8 cxx_eval_outermost_constant_expr
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:11008
0x4b4a89 maybe_constant_init_1
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:11681
0x4b4b17 maybe_constant_init(tree_node*, tree_node*, bool)
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:11699
0x4b46c9 fold_non_dependent_init(tree_node*, int, bool, tree_node*)
/home/mpolacek/src/gcc/gcc/cp/constexpr.cc:11625
0x95f97b store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
/home/mpolacek/src/gcc/gcc/cp/typeck2.cc:1006
0x5647f7 check_initializer
/home/mpolacek/src/gcc/gcc/cp/decl.cc:8665
0x56cf30 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int,
cp_decomp*)
/home/mpolacek/src/gcc/gcc/cp/decl.cc:9935
0x742c1d cp_parser_init_declarator
/home/mpolacek/src/gcc/gcc/cp/parser.cc:26418
0x72ff3a cp_parser_simple_declaration
/home/mpolacek/src/gcc/gcc/cp/parser.cc:18099
0x72fab5 cp_parser_block_declaration
/home/mpolacek/src/gcc/gcc/cp/parser.cc:17918
0x72f4e5 cp_parser_declaration
/home/mpolacek/src/gcc/gcc/cp/parser.cc:17719