]> gcc.gnu.org Git - gcc.git/commit
c++/modules: imported spec befriending class tmpl [PR114889]
authorPatrick Palka <ppalka@redhat.com>
Tue, 30 Apr 2024 01:27:59 +0000 (21:27 -0400)
committerPatrick Palka <ppalka@redhat.com>
Tue, 30 Apr 2024 01:27:59 +0000 (21:27 -0400)
commit22b20ac6c6aead2d3f36c413a77dd0b80adfec39
tree871687057d22be59607e79ae7d195ce1cc9b6457
parent3900e944b0ac9db77380c5bb8635977dfd3b0691
c++/modules: imported spec befriending class tmpl [PR114889]

When adding to CLASSTYPE_BEFRIENDING_CLASSES as part of installing an
imported class definition, we need to look through TEMPLATE_DECL like
make_friend_class does.

Otherwise in the below testcase we won't add _Hashtable<int, int> to
CLASSTYPE_BEFRIENDING_CLASSES of _Map_base, which leads to a bogus
access check failure for _M_hash_code.

PR c++/114889

gcc/cp/ChangeLog:

* module.cc (trees_in::read_class_def): Look through
TEMPLATE_DECL when adding to CLASSTYPE_BEFRIENDING_CLASSES.

gcc/testsuite/ChangeLog:

* g++.dg/modules/friend-8_a.H: New test.
* g++.dg/modules/friend-8_b.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/module.cc
gcc/testsuite/g++.dg/modules/friend-8_a.H [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/friend-8_b.C [new file with mode: 0644]
This page took 0.062377 seconds and 6 git commands to generate.