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

            Bug ID: 119646
           Summary: ICE on lix-2.92.0: internal compiler error: in
                    flatten_await_stmt, at cp/coroutines.cc:3136
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: slyfox at gcc dot gnu.org
  Target Milestone: ---

Created attachment 61018
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=61018&action=edit
serve-protocol.cc.cc.xz

Observed the crash today when tried to build lix-2.92.0. It looks like at least
gcc-14 and master branches are affected.

Was not able to reduce to something reasonable. Attaching the full preprocessed
file.

To reproduce against r15-9225-g3026daa8edcc0d

$ gcc/xg++ -Bgcc -c serve-protocol.cc.cc -o bug.o -std=c++23

serve-protocol.cc.cc:89244:20: warning: template-id not allowed for constructor
in C++20 [-Wtemplate-id-cdtor]
89244 |     explicit ref<T>(const std::shared_ptr<T> & p)
      |                    ^
serve-protocol.cc.cc:89244:20: note: remove the ‘< >’
serve-protocol.cc.cc:89250:21: warning: template-id not allowed for constructor
in C++20 [-Wtemplate-id-cdtor]
89250 |     explicit ref<T>(T * p)
      |                     ^
serve-protocol.cc.cc:89250:21: note: remove the ‘< >’
serve-protocol.cc.cc: In static member function ‘static
nix::WireFormatGenerator
nix::ServeProto::Serialise<nix::UnkeyedValidPathInfo>::write(const nix::Store&,
nix::ServeProto::WriteConn, const nix::UnkeyedValidPathInfo&)’:
serve-protocol.cc.cc:140160:1: internal compiler error: in flatten_await_stmt,
at cp/coroutines.cc:3136
140160 | }
       | ^
0x292bc77 diagnostic_context::diagnostic_impl(rich_location*,
diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag
(*) [1], diagnostic_t)
        ???:0
0x293eeb5 internal_error(char const*, ...)
        ???:0
0x29278dc fancy_abort(char const*, int, char const*)
        ???:0
0x8b8efc flatten_await_stmt(var_nest_node*, hash_set<tree_node*, false,
default_hash_traits<tree_node*> >*, hash_set<tree_node*, false,
default_hash_traits<tree_node*> >*, tree_node**)
        ???:0
0x8b8bc6 flatten_await_stmt(var_nest_node*, hash_set<tree_node*, false,
default_hash_traits<tree_node*> >*, hash_set<tree_node*, false,
default_hash_traits<tree_node*> >*, tree_node**)
        ???:0
0x8bb5c6 await_statement_walker(tree_node**, int*, void*)
        ???:0
0x16f74d6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x8b9f95 await_statement_walker(tree_node**, int*, void*)
        ???:0
0x16f74d6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x8b9e48 await_statement_walker(tree_node**, int*, void*)
        ???:0
0x16f74d6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x8b9f95 await_statement_walker(tree_node**, int*, void*)
        ???:0
0x16f74d6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x16f8504 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x8b9f95 await_statement_walker(tree_node**, int*, void*)
        ???:0
0x16f74d6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x8b9e48 await_statement_walker(tree_node**, int*, void*)
        ???:0
0x16f74d6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
        ???:0
0x8bef70 cp_coroutine_transform::apply_transforms()
        ???:0
0x92d3bd finish_function(bool)
        ???:0
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.

Compiler details:

$ gcc/xg++ -Bgcc -v
Reading specs from gcc/specs
COLLECT_GCC=gcc/xg++
COLLECT_LTO_WRAPPER=gcc/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/slyfox/dev/git/gcc/configure --disable-multilib
--disable-bootstrap --disable-lto --disable-libsanitizer
--disable-libstdcxx-pch --enable-languages=c,c++ --disable-libgomp
--disable-libquadmath --disable-libvtv CFLAGS='-O1 -g0' CXXFLAGS='-O1 -g0'
LDFLAGS='-O1 -g0'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 15.0.1 20250405 (experimental) (GCC)

Reply via email to