aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.dg/pr97560.C44
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/pr97560.C b/gcc/testsuite/g++.dg/pr97560.C
new file mode 100644
index 0000000..f9e7edf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr97560.C
@@ -0,0 +1,44 @@
+// { dg-do compile }
+// { dg-options "-O2 -fno-tree-forwprop -fnon-call-exceptions" }
+
+template <typename>
+struct pv;
+
+template <typename CY>
+struct pv<CY &> {
+ typedef CY g7;
+};
+
+template <typename Q6>
+typename pv<Q6>::g7 hq (Q6 &&lb)
+{
+ return static_cast<typename pv<Q6>::g7 &&> (lb);
+}
+
+struct fk {
+ fk *j6;
+ fk *od;
+};
+
+fk *qi;
+
+struct xz : fk {
+ xz (xz &&)
+ {
+ qi = this;
+
+ if (j6)
+ od = this;
+ }
+};
+
+struct el {
+ struct {
+ xz ls;
+ } eu;
+};
+
+struct be : el {
+};
+
+be l1 = hq (l1);