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

            Bug ID: 126097
           Summary: [Regression 14/15/16/17] ICE error reporting routines
                    re-entered. c++20, Wpacked  since r14-9938
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mjires at gcc dot gnu.org
                CC: ppalka at gcc dot gnu.org
  Target Milestone: ---

Compiling testcase g++.dg/cpp2a/lambda-uneval26.C results in ICE since
r14-9938-g081c1e93d56d35.

$ cat lambda-uneval26.C
template<auto>
using Foo = decltype([](auto) { return 0; }(0));

template<typename...>
Foo<[] {}> foo() {}

auto t = foo();


$ g++ lambda-uneval26.C -fpack-struct -Wpacked -std=c++20
lambda-uneval26.C: In substitution of ‘template<class ...> Foo<<lambda> > foo()
[with <template-parameter-1-1> = {}]’:
lambda-uneval26.C:7:13:   required from here
    7 | auto t = foo();
      |          ~~~^~
lambda-uneval26.C:5:6: warning: packed attribute is unnecessary for ‘._anon_2’
[-Wpacked]
    5 | Foo<[] {}> foo() {}
      |      ^
lambda-uneval26.C: In substitution of ‘template<auto <anonymous> > using Foo =
decltype (<lambda>(0)) [with auto <anonymous> = <lambda closure
object><lambda()>()]’:
lambda-uneval26.C:5:12:   required by substitution of ‘template<class ...>
Foo<<lambda> > foo() [with <template-parameter-1-1> = {}]’
    5 | Foo<[] {}> foo() {}
      |            ^~~
lambda-uneval26.C:7:13:   required from here
    7 | auto t = foo();
      |          ~~~^~
lambda-uneval26.C:2:23: warning: packed attribute is unnecessary for ‘._anon_3’
[-Wpacked]
    2 | using Foo = decltype([](auto) { return 0; }(0));
      |                       ^

internal compiler error: error reporting routines re-entered.
0x29f2aa9 warning(diagnostics::option_id, char const*, ...)
        /home/mjires/git/GCC/master/gcc/diagnostic-global-context.cc:247
0x13e8bb2 finalize_record_size
        /home/mjires/git/GCC/master/gcc/stor-layout.cc:1854
0x13e8bb2 finish_record_layout(record_layout_info_s*, int)
        /home/mjires/git/GCC/master/gcc/stor-layout.cc:2325
0x89d00b layout_class_type
        /home/mjires/git/GCC/master/gcc/cp/class.cc:7466
0x8a709c finish_struct_1(tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/class.cc:8057
0x8a9968 finish_struct(tree_node*, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/class.cc:8349
0xb496bd tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/pt.cc:21405
0xb50fb6 tsubst_expr(tree_node*, tree_node*, int, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/pt.cc:23418
0xb5c19a tsubst_template_arg(tree_node*, tree_node*, int, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/pt.cc:13386
0xb65eac tsubst_template_args(tree_node*, tree_node*, int, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/pt.cc:14766
0xb59cf4 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/pt.cc:17613
0xb57fc2 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/mjires/git/GCC/master/gcc/cp/pt.cc:17206
0x9b02d0 dump_template_bindings
        /home/mjires/git/GCC/master/gcc/cp/error.cc:625
0x9b02d0 dump_substitution
        /home/mjires/git/GCC/master/gcc/cp/error.cc:1894
0x9b17bb dump_function_decl
        /home/mjires/git/GCC/master/gcc/cp/error.cc:2074
0x9b305b dump_decl
        /home/mjires/git/GCC/master/gcc/cp/error.cc:1615
0x9bf8f6 decl_to_string
        /home/mjires/git/GCC/master/gcc/cp/error.cc:3716
0x9bf8f6 cp_printer
        /home/mjires/git/GCC/master/gcc/cp/error.cc:5046
0x2a64c5c format_phase_2
        /home/mjires/git/GCC/master/gcc/pretty-print.cc:2303
0x2a64c5c pretty_printer::format(text_info&)
        /home/mjires/git/GCC/master/gcc/pretty-print.cc:1846
/home/mjires/built/master/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1plus -quiet
-D_GNU_SOURCE lambda-uneval26.C -quiet -dumpdir a- -dumpbase lambda-uneval26.C
-dumpbase-ext .C -mtune=generic -march=x86-64 -Wpacked -std=c++20 -fpack-struct
-o /tmp/ccRimrQa.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.


$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/home/mjires/built/master/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/mjires/git/GCC/master/configure
--prefix=/home/mjires/built/master --disable-bootstrap
--enable-languages=c,c++,fortran,lto --disable-multilib --disable-libsanitizer
--enable-checking : (reconfigured) /home/mjires/git/GCC/master/configure
--prefix=/home/mjires/built/master --disable-bootstrap
--enable-languages=c,c++,fortran,lto --disable-multilib --disable-libsanitizer
--enable-checking
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 17.0.0 20260703 (experimental) (GCC)

Reply via email to