diff options
author | Nathaniel Shead <nathanieloshead@gmail.com> | 2025-05-22 22:16:22 +1000 |
---|---|---|
committer | Nathaniel Shead <nathanieloshead@gmail.com> | 2025-05-24 08:57:40 +1000 |
commit | a8f62a9b32668ea77da721cdc8b9403e507637af (patch) | |
tree | 7cafe92099d0581220a7d4eccdb6aa7ce9f8e885 /gcc/coverage.c | |
parent | 2486d94bc45a9815395a36cc6dc1e9e3219a74b7 (diff) | |
download | gcc-a8f62a9b32668ea77da721cdc8b9403e507637af.zip gcc-a8f62a9b32668ea77da721cdc8b9403e507637af.tar.gz gcc-a8f62a9b32668ea77da721cdc8b9403e507637af.tar.bz2 |
c++/modules: Fix merge of TLS init functions [PR120363]
The PR notes that we missed setting DECL_CONTEXT on the TLS init
function; we missed this initially because this function is not created
in header units, only named modules.
I also noticed that 'DECL_CONTEXT (fn) = DECL_CONTEXT (var)' was
incorrect: for class members, this ends up having the modules merging
machinery treat the decl as a member function, which breaks when
attempting to dedup against an existing completed class type. Instead
we can just use the global_namespace as the context, because the name of
the function is already mangled appropriately so that we'll match the
correct duplicates.
PR c++/120363
gcc/cp/ChangeLog:
* decl2.cc (get_tls_init_fn): Set context as global_namespace.
(get_tls_wrapper_fn): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/modules/pr113292_a.H: Move to...
* g++.dg/modules/tls-1_a.H: ...here.
* g++.dg/modules/pr113292_b.C: Move to...
* g++.dg/modules/tls-1_b.C: ...here.
* g++.dg/modules/pr113292_c.C: Move to...
* g++.dg/modules/tls-1_c.C: ...here.
* g++.dg/modules/tls-2_a.C: New test.
* g++.dg/modules/tls-2_b.C: New test.
* g++.dg/modules/tls-2_c.C: New test.
* g++.dg/modules/tls-3.h: New test.
* g++.dg/modules/tls-3_a.H: New test.
* g++.dg/modules/tls-3_b.C: New test.
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Reviewed-by: Jason Merrill <jason@redhat.com>
(cherry picked from commit 66e9a4f3083356b064cc64651edad466a56f762b)
Diffstat (limited to 'gcc/coverage.c')
0 files changed, 0 insertions, 0 deletions