blob: 488c19d3ede809631d1a7ede0e7f7bcdc7a1ae43 [file] [log] [blame]
/* { dg-add-options vect_early_break } */
/* { dg-require-effective-target vect_early_break } */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target mmap } */
/* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */
#include <sys/mman.h>
#include <unistd.h>
#include "tree-vect.h"
__attribute__((noipa))
int foo (const char *s, unsigned long n)
{
unsigned long len = 0;
while (*s++ && n--)
++len;
return len;
}
int main()
{
check_vect ();
long pgsz = sysconf (_SC_PAGESIZE);
void *p = mmap (NULL, pgsz * 3, PROT_READ|PROT_WRITE,
MAP_ANONYMOUS|MAP_PRIVATE, 0, 0);
if (p == MAP_FAILED)
return 0;
mprotect (p, pgsz, PROT_NONE);
mprotect (p+2*pgsz, pgsz, PROT_NONE);
char *p1 = p + pgsz;
p1[0] = 1;
p1[1] = 0;
foo (p1, 1000);
p1 = p + 2*pgsz - 2;
p1[0] = 1;
p1[1] = 0;
foo (p1, 1000);
return 0;
}