1// { dg-do compile }
2// { dg-require-effective-target vect_float }
3
4float mem[4096];
5const int N=1024;
6
7struct XYZ {
8    float * mem;
9    int n;
10    float * x() { return mem;}
11    float * y() { return x()+n;}
12    float * z() { return y()+n;}
13};
14
15inline
16void 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
21void 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// { dg-final { cleanup-tree-dump "vect" } }
28