aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr69891.c
blob: 2c5e86372e3e0116efd9e0eb2a0b8f273bd8b39c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* PR rtl-optimization/69891 */
/* { dg-do run } */
/* { dg-options "-O -fno-tree-fre -mstringop-strategy=libcall -Wno-psabi" } */
/* { dg-additional-options "-mno-sse" { target ia32 } } */

typedef unsigned short A;
typedef unsigned short B __attribute__ ((vector_size (32)));
typedef unsigned int C;
typedef unsigned int D __attribute__ ((vector_size (32)));
typedef unsigned long long E;
typedef unsigned long long F __attribute__ ((vector_size (32)));

__attribute__((noinline, noclone)) unsigned
foo(D a, B b, D c, F d)
{
  b /= (B) {1, -c[0]} | 1;
  c[0] |= 7;
  a %= c | 1;
  c ^= c;
  return a[0] + b[15] + c[0] + d[3];
}

int
main ()
{
  unsigned x = foo ((D) {}, (B) {}, (D) {}, (F) {});
  if (x != 0)
    __builtin_abort ();
  return 0;
}