2015-01-20 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / vect / pr64410.cc
blob13d5576f3799b43933f3d83d8ae9e1b6d86c38ce
1 // { dg-do compile }
2 // { dg-require-effective-target vect_double }
4 #include <vector>
5 #include <complex>
6 #include <iostream>
7 #include <cstdlib>
9 using namespace std;
11 int
12 main(int argc, char** argv)
14 if (argc < 3)
16 cout << "usage: size N" << endl;
17 return -1;
20 const unsigned int size = atoi(argv[1]);
21 const unsigned int N = atoi(argv[2]);
23 cout << "size = " << size << endl;
24 cout << "N = " << N << endl;
26 typedef complex<double> cx_double;
28 vector< cx_double > A(size);
29 vector< cx_double > B(size);
30 vector< cx_double > C(size);
32 cx_double* A_ptr = &A[0];
33 cx_double* B_ptr = &B[0];
34 cx_double* C_ptr = &C[0];
36 for (unsigned int i=0; i<size; ++i)
38 A_ptr[i] = cx_double( (double(rand())/RAND_MAX), (double(rand())/RAND_MAX) );
39 B_ptr[i] = cx_double( (double(rand())/RAND_MAX), (double(rand())/RAND_MAX) );
40 C_ptr[i] = cx_double( double(0), double(0) );
43 for (unsigned int j=0; j<N; ++j)
44 for (unsigned int i=0; i<size; ++i)
45 C_ptr[i] = A_ptr[i] + B_ptr[i];
47 cout << C_ptr[0] << endl;
49 return 0;
52 // { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" } }
53 // { dg-final { cleanup-tree-dump "vect" } }