1 // { dg-do compile }
2 // { dg-require-effective-target vect_float }
3 
4 float mem[4096];
5 const int N=1024;
6 
7 struct XYZ {
8     float * mem;
9     int n;
xXYZ10     float * x() { return mem;}
yXYZ11     float * y() { return x()+n;}
zXYZ12     float * z() { return y()+n;}
13 };
14 
15 inline
sum(float * x,float * y,float * z,int n)16 void sum(float * x, float * y, float * z, int n) {
17     for (int i=0;i!=n; ++i)
18       x[i]=y[i]+z[i];
19 }
20 
sumS()21 void sumS() {
22     XYZ xyz; xyz.mem=mem; xyz.n=N;
23     sum(xyz.x(),xyz.y(),xyz.z(),xyz.n);
24 }
25 
26 // { dg-final { scan-tree-dump-not "run-time aliasing" "vect" } }
27