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)