]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: Fix OpenMP support with C++20 modules [PR119864]
authorNathaniel Shead <nathanieloshead@gmail.com>
Mon, 21 Apr 2025 10:40:29 +0000 (20:40 +1000)
committerNathaniel Shead <nathanieloshead@gmail.com>
Wed, 14 May 2025 09:29:48 +0000 (19:29 +1000)
commit53690a84a35b905403126be66210d21e89f53ac6
treeed5afbd37b27029c18ba15636c9724f9da4fc59b
parent7925d3263950585c5e081b039e59e26bec539cac
c++: Fix OpenMP support with C++20 modules [PR119864]

In r15-2799-gf1bfba3a9b3f31, a new kind of global constructor was added.
Unfortunately this broke C++20 modules, as both the host and target
constructors were given the same mangled name.  This patch ensures that
only the host constructor gets the module name mangling for now, and
stops forcing the creation of the target constructor even when no such
initialization is required.

PR c++/119864

gcc/cp/ChangeLog:

* decl2.cc (start_objects): Only use module initialized for
host.
(c_parse_final_cleanups): Don't always create an OMP offload
init function in modules.

gcc/testsuite/ChangeLog:

* g++.dg/modules/openmp-1.C: New test.

Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Reviewed-by: Jason Merrill <jason@redhat.com>
(cherry picked from commit 79b7e37ea3fbbc43958190f69f6da3be3d809c9c)
gcc/cp/decl2.cc
gcc/testsuite/g++.dg/modules/openmp-1.C [new file with mode: 0644]