https://gcc.gnu.org/g:60105915314a9ad11b213c6edb10697b3cafdee5

commit 60105915314a9ad11b213c6edb10697b3cafdee5
Author: Thomas Schwinge <[email protected]>
Date:   Tue Apr 14 02:06:13 2026 +0000

    XFAIL 'libgomp.c++/target-flex-{300,60,61,62,81}.C'
    
    ... which run into:
    
        [...]/libgomp.c++/target-flex-300.C: In function 'bool 
test(std::size_t)':
        [...]/libgomp.c++/target-flex-300.C:25:11: sorry, unimplemented: 
unsupported map expression '<lambda closure 
object>test(std::size_t)::<lambda(int)>()'
    
    ... etc., due to other OG15 changes.
    Specifically, the "sorry" in gimplify_adjust_omp_clauses was added by
    the patch "OpenMP: Support strided and shaped-array updates for C++".
    
    Also temporarily restrict these tests to compile-only to avoid an UNRESOLVED
    on the test execution.
    
            libgomp/
            * testsuite/libgomp.c++/target-flex-300.C: XFAIL.
            * testsuite/libgomp.c++/target-flex-60.C: Likewise.
            * testsuite/libgomp.c++/target-flex-61.C: Likewise.
            * testsuite/libgomp.c++/target-flex-62.C: Likewise.
            * testsuite/libgomp.c++/target-flex-81.C: Likewise.
    
    Co-Authored-By: Sandra Loosemore <[email protected]>

Diff:
---
 libgomp/testsuite/libgomp.c++/target-flex-300.C | 6 ++++++
 libgomp/testsuite/libgomp.c++/target-flex-60.C  | 6 ++++++
 libgomp/testsuite/libgomp.c++/target-flex-61.C  | 6 ++++++
 libgomp/testsuite/libgomp.c++/target-flex-62.C  | 6 ++++++
 libgomp/testsuite/libgomp.c++/target-flex-81.C  | 6 ++++++
 5 files changed, 30 insertions(+)

diff --git a/libgomp/testsuite/libgomp.c++/target-flex-300.C 
b/libgomp/testsuite/libgomp.c++/target-flex-300.C
index ecfd8cb108a4..b5c459de889d 100644
--- a/libgomp/testsuite/libgomp.c++/target-flex-300.C
+++ b/libgomp/testsuite/libgomp.c++/target-flex-300.C
@@ -1,5 +1,9 @@
 /* { dg-additional-options -std=c++23 } */
 
+/* FIXME: See XFAIL below.  Until this is fixed, this test won't compile
+   and will result in a bogus UNRESOLVED.  */
+/* { dg-do compile } */
+
 /* numerics  */
 
 #include <algorithm>
@@ -23,6 +27,8 @@ bool test(std::size_t arg)
   int *data = vec.data();
   std::size_t size = vec.size();
   #pragma omp target defaultmap(none) map(from: ok, midpoint_out) map(tofrom: 
data[ :size]) map(to: arg, size)
+  /* <https://baylibre.slack.com/archives/C06TTV7HMMG/p1748508583437829>
+     { dg-bogus {sorry, unimplemented: unsupported map expression '<lambda 
closure object>.*} TODO { xfail *-*-* } .-2 } */
     {
       std::span span = {data, size};
       bool inner_ok = true;
diff --git a/libgomp/testsuite/libgomp.c++/target-flex-60.C 
b/libgomp/testsuite/libgomp.c++/target-flex-60.C
index 7e1bf96c8d17..782d91a17d0e 100644
--- a/libgomp/testsuite/libgomp.c++/target-flex-60.C
+++ b/libgomp/testsuite/libgomp.c++/target-flex-60.C
@@ -1,5 +1,9 @@
 /* algorithms pre c++20 */
 
+/* FIXME: See XFAIL below.  Until this is fixed, this test won't compile
+   and will result in a bogus UNRESOLVED.  */
+/* { dg-do compile } */
+
 #include <algorithm>
 #include <vector>
 
@@ -13,6 +17,8 @@ bool test(const T (&arr)[Size])
   T out_shifted_arr[Size];
   #pragma omp target map(from: ok, out_2x_arr[ :Size], out_shifted_arr[ 
:Size]) \
                     map(to: arr[ :Size])
+  /* <https://baylibre.slack.com/archives/C06TTV7HMMG/p1748508583437829>
+     { dg-bogus {sorry, unimplemented: unsupported map expression '<lambda 
closure object>.*} TODO { xfail *-*-* } .-3 } */
     {
       std::vector<T> vec(Size);
       std::vector<T> mutated(Size);
diff --git a/libgomp/testsuite/libgomp.c++/target-flex-61.C 
b/libgomp/testsuite/libgomp.c++/target-flex-61.C
index 551679f65fb0..d67b4c56070a 100644
--- a/libgomp/testsuite/libgomp.c++/target-flex-61.C
+++ b/libgomp/testsuite/libgomp.c++/target-flex-61.C
@@ -1,5 +1,9 @@
 /* { dg-additional-options "-std=c++20" } */
 
+/* FIXME: See XFAIL below.  Until this is fixed, this test won't compile
+   and will result in a bogus UNRESOLVED.  */
+/* { dg-do compile } */
+
 /* ranged algorithms c++20 */
 
 #include <algorithm>
@@ -22,6 +26,8 @@ bool test(const T (&arr)[Size])
   #pragma omp target defaultmap(none) \
                     map(from: ok, out_2x_arr[ :Size], out_shifted_arr[ :Size]) 
\
                     map(to: arr[ :Size])
+  /* <https://baylibre.slack.com/archives/C06TTV7HMMG/p1748508583437829>
+     { dg-bogus {sorry, unimplemented: unsupported map expression '<lambda 
closure object>.*} TODO { xfail *-*-* } .-4 } */
     {
       std::vector<T> vec(Size);
       std::vector<T> mutated(Size);
diff --git a/libgomp/testsuite/libgomp.c++/target-flex-62.C 
b/libgomp/testsuite/libgomp.c++/target-flex-62.C
index 6fb434504ffb..db7c1fd8208d 100644
--- a/libgomp/testsuite/libgomp.c++/target-flex-62.C
+++ b/libgomp/testsuite/libgomp.c++/target-flex-62.C
@@ -1,5 +1,9 @@
 /* { dg-additional-options -std=c++23 } */
 
+/* FIXME: See XFAIL below.  Until this is fixed, this test won't compile
+   and will result in a bogus UNRESOLVED.  */
+/* { dg-do compile } */
+
 /* std::views stuff.  Also tests std::tuple with std::views::zip.  */
 
 #include <algorithm>
@@ -21,6 +25,8 @@ bool f()
 
   bool ok;
   #pragma omp target defaultmap(none) map(from: ok) map(to: arr_fwd[ :8], 
arr_rev[ :8])
+  /* <https://baylibre.slack.com/archives/C06TTV7HMMG/p1748508583437829>
+     { dg-bogus {sorry, unimplemented: unsupported map expression '<lambda 
closure object>.*} TODO { xfail *-*-* } .-2 } */
     {
       std::span<const int> fwd = {arr_fwd, 8};
       std::span<const int> rev = {arr_rev, 8};
diff --git a/libgomp/testsuite/libgomp.c++/target-flex-81.C 
b/libgomp/testsuite/libgomp.c++/target-flex-81.C
index d7ed69fdd84c..ed5992f41c74 100644
--- a/libgomp/testsuite/libgomp.c++/target-flex-81.C
+++ b/libgomp/testsuite/libgomp.c++/target-flex-81.C
@@ -1,5 +1,9 @@
 /* { dg-additional-options "-std=c++20" } */
 
+/* FIXME: See XFAIL below.  Until this is fixed, this test won't compile
+   and will result in a bogus UNRESOLVED.  */
+/* { dg-do compile } */
+
 #include <ranges>
 #include <span>
 #include <type_traits>
@@ -35,6 +39,8 @@ bool test(Rn&& range)
   std::size_t size = vec.size();
   bool ok;
   #pragma omp target map(from: ok) map(tofrom: data[ :size]) map(to: size)
+  /* <https://baylibre.slack.com/archives/C06TTV7HMMG/p1748508583437829>
+     { dg-bogus {sorry, unimplemented: unsupported map expression '<lambda 
closure object>.*} TODO { xfail *-*-* } .-2 } */
     {
       std::vector<value_type> orig = {data, data + size};
       std::span<value_type> span = {data, size};

Reply via email to