diff options
author | Jason Merrill <jason@redhat.com> | 2024-07-26 16:53:03 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2024-07-27 16:25:47 -0400 |
commit | 3129a2ed6a764c0687efaca9eba53dcf12d1d8a0 (patch) | |
tree | 935c3da778ab8956747ab7b5fa9a207b35344048 /gcc/tree-ssa-ifcombine.c | |
parent | dab0f35fcb4dd3ba584422013096c4ebc6bff90d (diff) | |
download | gcc-3129a2ed6a764c0687efaca9eba53dcf12d1d8a0.zip gcc-3129a2ed6a764c0687efaca9eba53dcf12d1d8a0.tar.gz gcc-3129a2ed6a764c0687efaca9eba53dcf12d1d8a0.tar.bz2 |
c++: ICE with concept, local class, and lambda [PR115561]
Here when we want to synthesize methods for foo()::B maybe_push_to_top_level
calls push_function_context, which sets cfun to a dummy value; later
finish_call_expr tries to set something in
cp_function_chain (i.e. cfun->language), which isn't set. Many places in
the compiler check cfun && cp_function_chain to avoid this problem; here we
also want to check !cp_unevaluated_operand, like set_flags_from_callee does.
PR c++/115561
gcc/cp/ChangeLog:
* semantics.cc (finish_call_expr): Check cp_unevaluated_operand.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-lambda21.C: New test.
Diffstat (limited to 'gcc/tree-ssa-ifcombine.c')
0 files changed, 0 insertions, 0 deletions