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