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.

Reply via email to