OSDN Git Service

PR tree-optimization/49038
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / pr49038.c
1 #include <sys/mman.h>
2 #include <stdio.h>
3
4 #define COUNT 320
5 #define MMAP_SIZE 0x10000
6 #define ADDRESS 0x1122000000
7 #define TYPE unsigned short
8
9 void __attribute__((noinline))
10 foo (TYPE *__restrict a, TYPE *__restrict b)
11 {
12   int n;
13
14   for (n = 0; n < COUNT; n++)
15     a[n] = b[n * 2];
16 }
17
18 int
19 main (void)
20 {
21   void *x;
22   size_t b_offset;
23
24   x = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE,
25             MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
26   if (x == MAP_FAILED)
27     {
28       perror ("mmap");
29       return 1;
30     }
31
32   b_offset = MMAP_SIZE - (2 * COUNT - 1) * sizeof (TYPE);
33   foo ((unsigned short *) x,
34        (unsigned short *) ((char *) x + b_offset));
35   return 0;
36 }
37
38 /* { dg-final { cleanup-tree-dump "vect" } } */