https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94066

            Bug ID: 94066
           Summary: ICE (starting/ending union member lifetime) in
                    cxx_eval_bare_aggregate, at cp/constexpr.c:3790
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hstong at ca dot ibm.com
  Target Milestone: ---

The following case, which (during constant expression evaluation) starts the
lifetime of a union member while evaluating a function whose return value would
become the other union member leads to an ICE.

### SOURCE (<stdin>):
struct A { long x; };

union U;
constexpr A foo(U *up);

union U {
  A a = foo(this); int y;
};

constexpr A foo(U *up) {
  up->y = 11;
  return {42};
}

extern constexpr U u = {};


### COMPILER INVOCATION:
g++ -fsyntax-only -xc++ -std=c++2a -


### COMPILER OUTPUT:
<stdin>:15:25: internal compiler error: in cxx_eval_bare_aggregate, at
cp/constexpr.c:3790
0x5bac9e cxx_eval_bare_aggregate
        ../../source/gcc/cp/constexpr.c:3790
0x6305d4 cxx_eval_constant_expression
        ../../source/gcc/cp/constexpr.c:5853
0x632610 cxx_eval_outermost_constant_expr
        ../../source/gcc/cp/constexpr.c:6409
0x635c14 maybe_constant_init_1
        ../../source/gcc/cp/constexpr.c:6866
0x78167c store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
        ../../source/gcc/cp/typeck2.c:889
0x66480d check_initializer
        ../../source/gcc/cp/decl.c:6820
0x67863c cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
        ../../source/gcc/cp/decl.c:7746
0x6fad51 cp_parser_init_declarator
        ../../source/gcc/cp/parser.c:20839
0x6ddc72 cp_parser_simple_declaration
        ../../source/gcc/cp/parser.c:13689
0x7030c2 cp_parser_declaration
        ../../source/gcc/cp/parser.c:13388
0x7037e4 cp_parser_translation_unit
        ../../source/gcc/cp/parser.c:4731
0x7037e4 c_parse_file()
        ../../source/gcc/cp/parser.c:43760
0x7cb39b c_common_parse_file()
        ../../source/gcc/c-family/c-opts.c:1186
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


### COMPILER VERSION INFO (g++ -v):
Using built-in specs.
COLLECT_GCC=/opt/wandbox/gcc-head/bin/g++
COLLECT_LTO_WRAPPER=/opt/wandbox/gcc-head/libexec/gcc/x86_64-pc-linux-gnu/10.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../source/configure --prefix=/opt/wandbox/gcc-head
--enable-languages=c,c++ --disable-multilib --without-ppl --without-cloog-ppl
--enable-checking=release --disable-nls --enable-lto
LDFLAGS=-Wl,-rpath,/opt/wandbox/gcc-head/lib,-rpath,/opt/wandbox/gcc-head/lib64,-rpath,/opt/wandbox/gcc-head/lib32
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.0.1 20200304 (experimental) (GCC)

Reply via email to