1 // { dg-require-effective-target powerpc_p8vector_ok } */
2 // { dg-options "-mdejagnu-cpu=power8 -O3 -fstack-protector" }
4 // PAR target/71294 failed because RELOAD could not figure how create a V2DI
5 // vector that auto vectorization created with each element being the same
6 // stack address, with stack-protector turned on.
9 template <typename _Tp, int m, int n> class B {
19 unsigned long &operator[](int);
24 template <typename _Tp, int m, int n> A(const B<_Tp, m, n> &, bool);
27 unsigned char *datastart;
28 unsigned char *dataend;
29 unsigned char *datalimit;
32 template <typename _Tp, int m, int n>
33 A::A(const B<_Tp, m, n> &p1, bool)
35 step[0] = cols * sizeof(_Tp);
36 datastart = data = (unsigned char *)p1.val;
37 datalimit = dataend = datastart + rows * step[0];
41 static void compute(C);
42 template <typename _Tp, int m, int n, int nm>
43 static void compute(const B<_Tp, m, n> &, B<_Tp, nm, 1> &, B<_Tp, m, nm> &,
47 unsigned long &D::operator[](int p1) { return p[p1]; }
48 template <typename _Tp, int m, int n, int nm>
49 void F::compute(const B<_Tp, m, n> &, B<_Tp, nm, 1> &, B<_Tp, m, nm> &,
55 B<double, 4, 4> b, c, e;
57 F::compute(b, d, c, e);