blob: 56ad50c41f6edeced26deaa57aea592f12c5edb1 [file] [log] [blame]
/* PR tree-optimization/60823 */
/* { dg-do compile } */
/* { dg-options "-O2 -fopenmp-simd -fno-strict-aliasing" } */
void bar (char *, double *);
#if __SIZEOF_DOUBLE__ >= 4
struct S { char c[sizeof (double)]; };
void baz (struct S, struct S);
union U { struct S s; double d; };
#pragma omp declare simd simdlen(4) notinbranch
__attribute__((noinline)) int
foo (double c1, double c2)
{
double *a = &c1;
char *b = (char *) &c1 + 2;
b[-2]++;
b[1]--;
*a++;
c2++;
bar ((char *) &c2 + 1, &c2);
c2 *= 3.0;
bar (b, a);
baz (((union U) { .d = c1 }).s, ((union U) { .d = c2 }).s);
baz (*(struct S *)&c1, *(struct S *)&c2);
return c1 + c2 + ((struct S *)&c1)->c[1];
}
/* { dg-warning "GCC does not currently support mixed size types for 'simd' functions" "" { target aarch64*-*-* } .-16 } */
#endif