https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95197
Bug ID: 95197 Summary: libgomp/testsuite/libgomp.c++/for-27.C fails with -std=c++17 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- See <https://gcc.gnu.org/pipermail/gcc-patches/2020-May/545879.html> for why this fails. My workaround was --- a/libgomp/testsuite/libgomp.c++/for-27.C +++ b/libgomp/testsuite/libgomp.c++/for-27.C @@ -151,6 +151,12 @@ f4 (const I<int> &x, const I<int> &y) else if (results[i]) \ abort () +// FIXME: OpenMP seems to count on this being instantiated; the copy +// constructor is called in functions fn2/fn3/fn4. But in C++17 we +// elide this copy constructor, so it's never been instantiated. For +// now instantiate it explicitly. +template I<int>::I(const I<int> &); + int main () { Seems that OpenMP has to call mark_used or some such.