aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr64114.c
blob: d948684beaf78be948093b2b7d73726921712608 (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
/* { dg-do compile } */
/* { dg-options "-O -mstringop-strategy=vector_loop -mno-push-args" } */

extern float *ptrs[];
extern int incs[];

struct big
{
  int i[0x10000];
};

extern void bar (struct big b);

struct big
foo (int n)
{
  struct big b;

  int inc14 = incs[15], inc16 = n, inc17 = n, inc19 = incs[3];
  float *ptr0 = ptrs[1], *ptr14 = ptrs[14], *ptr16 = ptrs[16];
  while (n--)
    *ptr0 += *ptr14 += inc14 += *ptr16 += inc16 += inc17 += inc19, bar (b);
  return b;
}