libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-early-break_109-pr113588.c
blob488c19d3ede809631d1a7ede0e7f7bcdc7a1ae43
1 /* { dg-add-options vect_early_break } */
2 /* { dg-require-effective-target vect_early_break } */
3 /* { dg-require-effective-target vect_int } */
4 /* { dg-require-effective-target mmap } */
6 /* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */
8 #include <sys/mman.h>
9 #include <unistd.h>
11 #include "tree-vect.h"
13 __attribute__((noipa))
14 int foo (const char *s, unsigned long n)
16 unsigned long len = 0;
17 while (*s++ && n--)
18 ++len;
19 return len;
22 int main()
25 check_vect ();
27 long pgsz = sysconf (_SC_PAGESIZE);
28 void *p = mmap (NULL, pgsz * 3, PROT_READ|PROT_WRITE,
29 MAP_ANONYMOUS|MAP_PRIVATE, 0, 0);
30 if (p == MAP_FAILED)
31 return 0;
32 mprotect (p, pgsz, PROT_NONE);
33 mprotect (p+2*pgsz, pgsz, PROT_NONE);
34 char *p1 = p + pgsz;
35 p1[0] = 1;
36 p1[1] = 0;
37 foo (p1, 1000);
38 p1 = p + 2*pgsz - 2;
39 p1[0] = 1;
40 p1[1] = 0;
41 foo (p1, 1000);
42 return 0;