Tested on x86_64-pc-linux-gnu, pushing as obvious.

-- >8 --

r16-5173-g52a24bcec9388a fixed this testcase, but I think it's still
worthwhile adding this reduced test for it to modules.exp so we don't
need to rely on the libstdc++ tests for it yet.

        PR c++/122646

gcc/testsuite/ChangeLog:

        * g++.dg/modules/friend-10_a.C: New test.
        * g++.dg/modules/friend-10_b.C: New test.

Signed-off-by: Nathaniel Shead <[email protected]>
---
 gcc/testsuite/g++.dg/modules/friend-10_a.C | 21 +++++++++++++++++++++
 gcc/testsuite/g++.dg/modules/friend-10_b.C |  5 +++++
 2 files changed, 26 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/modules/friend-10_a.C
 create mode 100644 gcc/testsuite/g++.dg/modules/friend-10_b.C

diff --git a/gcc/testsuite/g++.dg/modules/friend-10_a.C 
b/gcc/testsuite/g++.dg/modules/friend-10_a.C
new file mode 100644
index 00000000000..6669fffb9ea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-10_a.C
@@ -0,0 +1,21 @@
+// PR c++/122646
+// { dg-additional-options "-fmodules -fconcepts" }
+// { dg-module-cmi M }
+
+export module M;
+
+template <typename T>
+struct zip_view_iterator {
+  void operator-(int) {}
+  friend void operator-(zip_view_iterator, zip_view_iterator)
+    requires requires(T x) { x.begin() - x.begin(); }
+  {}
+};
+
+struct ref_view {
+  ref_view begin();
+};
+
+export template <typename X> void foo() {
+  zip_view_iterator<ref_view>{} - X();
+}
diff --git a/gcc/testsuite/g++.dg/modules/friend-10_b.C 
b/gcc/testsuite/g++.dg/modules/friend-10_b.C
new file mode 100644
index 00000000000..ea261aa4939
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-10_b.C
@@ -0,0 +1,5 @@
+// PR c++/122646
+// { dg-additional-options "-fmodules -fconcepts" }
+
+import M;
+template void foo<int>();
-- 
2.51.0

Reply via email to