aboutsummaryrefslogtreecommitdiff
path: root/contrib/gcc-changelog/git_commit.py
diff options
context:
space:
mode:
authorNathaniel Shead <nathanieloshead@gmail.com>2025-10-18 23:43:14 +1100
committerNathaniel Shead <nathanieloshead@gmail.com>2025-10-28 10:41:46 +1100
commit8212abbeffa69f143808e126f40c67f3eb7e7844 (patch)
treede69c7b8c2dfbe800f5233cc0355f4d369dcd838 /contrib/gcc-changelog/git_commit.py
parent89f8c4709446f4b16fe88ac25cfef7fa9a73f296 (diff)
downloadgcc-8212abbeffa69f143808e126f40c67f3eb7e7844.zip
gcc-8212abbeffa69f143808e126f40c67f3eb7e7844.tar.gz
gcc-8212abbeffa69f143808e126f40c67f3eb7e7844.tar.bz2
c++/modules: Use containing type as key for all member lambdas [PR122310]
The ICE in the linked PR occurs because we first stream the lambda type before its keyed decl has been streamed, but the key decl's type depends on the lambda. And so when streaming the key decl to check for an existing decl to merge with, merging the key decl itself crashes because its type has only been partially streamed. This patch fixes the issue by generalising the existing FIELD_DECL handling to any class member using the outermost containing TYPE_DECL as its key type. This way we can guarantee that the key decl has been streamed before the lambda type is otherwise needed. PR c++/122310 gcc/cp/ChangeLog: * module.cc (get_keyed_decl_scope): New function. (trees_out::get_merge_kind): Use it. (trees_out::key_mergeable): Use it. (maybe_key_decl): Key to the containing type for all members. gcc/testsuite/ChangeLog: * g++.dg/modules/lambda-12.h: New test. * g++.dg/modules/lambda-12_a.H: New test. * g++.dg/modules/lambda-12_b.C: New test. Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com> Reviewed-by: Jason Merrill <jason@redhat.com>
Diffstat (limited to 'contrib/gcc-changelog/git_commit.py')
0 files changed, 0 insertions, 0 deletions