diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/20030711-1.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.dg/20030711-1.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/20030711-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/20030711-1.c new file mode 100644 index 000000000..e8691961f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/20030711-1.c @@ -0,0 +1,36 @@ +/* Test whether strncmp has not been "optimized" into memcmp + nor any code with memcmp semantics. */ +/* { dg-do run { target mmap } } */ +/* { dg-options "-O2" } */ +#include <stddef.h> +#include <stdio.h> +#include <sys/mman.h> +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif +#ifndef MAP_ANON +#define MAP_ANON 0 +#endif +#ifndef MAP_FAILED +#define MAP_FAILED ((void *)-1) +#endif +#include <stdlib.h> + +void __attribute__((noinline)) test (const char *p) +{ + if (__builtin_strncmp (p, "abcdefghijklmnopq", 17) == 0) + abort (); +} + +int main (void) +{ + char *p = mmap (NULL, 131072, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (p == MAP_FAILED) + return 0; + if (munmap (p + 65536, 65536) < 0) + return 0; + __builtin_memcpy (p + 65536 - 5, "abcd", 5); + test (p + 65536 - 5); + return 0; +} |