43 lines
625 B
C
43 lines
625 B
C
/* PR rtl-optimization/64316 */
|
|
/* { dg-do compile } */
|
|
/* { dg-options "-O3" } */
|
|
/* { dg-additional-options "-mavx2" { target { i?86-*-* x86_64-*-* } } } */
|
|
|
|
struct S
|
|
{
|
|
unsigned int s;
|
|
unsigned long w[];
|
|
};
|
|
|
|
struct S **s;
|
|
|
|
int
|
|
foo (struct S *x, struct S *y, struct S *z)
|
|
{
|
|
unsigned int i;
|
|
unsigned long *a, *b, *c;
|
|
int r = 0;
|
|
for (a = x->w, b = y->w, c = z->w, i = 0; i < x->s; i++, a++)
|
|
{
|
|
unsigned long d = *b++ & *c++;
|
|
if (*a != d)
|
|
{
|
|
r = 1;
|
|
*a = d;
|
|
}
|
|
}
|
|
return r;
|
|
}
|
|
|
|
void
|
|
bar (int x)
|
|
{
|
|
int p = x - 1;
|
|
do
|
|
{
|
|
foo (s[x], s[x], s[p]);
|
|
p--;
|
|
}
|
|
while (p > 0);
|
|
}
|