summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/vect/pr105254.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/vect/pr105254.cc')
-rw-r--r--gcc/testsuite/g++.dg/vect/pr105254.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/vect/pr105254.cc b/gcc/testsuite/g++.dg/vect/pr105254.cc
new file mode 100644
index 00000000000..34814671a54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/vect/pr105254.cc
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fvect-cost-model=dynamic -mcpu=zeus" { target aarch64*-*-* } } */
+
+template <typename>
+struct complex;
+
+template <>
+struct complex<double> {
+ void operator+= (complex r) { v_ += r.v_; }
+ _Complex v_;
+};
+
+template <typename T>
+void
+bar (T);
+
+void
+foo (complex<double> *x)
+{
+ complex<double> s = {0.0};
+
+ for (int i = 0; i < 16; ++i)
+ s += x[i];
+
+ bar<complex<double> > (s);
+}