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

Reply via email to