comparison gcc/testsuite/gcc.dg/20050826-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* Test whether strncmp has not been "optimized" into memcmp
2 nor any code with memcmp semantics. */
3 /* { dg-do run { target mmap } } */
4 /* { dg-options "-O2" } */
5 #include <stddef.h>
6 #include <stdio.h>
7 #include <sys/mman.h>
8 /* Darwin spells this differently */
9 #ifndef MAP_ANONYMOUS
10 #define MAP_ANONYMOUS MAP_ANON
11 #endif
12 #ifndef MAP_ANON
13 #define MAP_ANON 0
14 #endif
15 #ifndef MAP_FAILED
16 #define MAP_FAILED ((void *)-1)
17 #endif
18 #include <stdlib.h>
19
20 struct Flags {
21 int filler[18];
22 unsigned int a:14;
23 unsigned int b:14;
24 unsigned int c:1;
25 unsigned int d:1;
26 unsigned int e:1;
27 unsigned int f:1;
28 };
29 static void __attribute__((noinline)) set (struct Flags *);
30 static void set (struct Flags *fp)
31 {
32 fp->b = 5;
33 fp->d = 1;
34 }
35
36 static int __attribute__((noinline)) bar (int);
37 static int bar(int x) { return !(x==1); }
38 int main (void)
39 {
40 char *p = mmap (NULL, 131072, PROT_READ | PROT_WRITE,
41 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
42 struct Flags *fp;
43 if (p == MAP_FAILED)
44 return 0;
45 if (munmap (p + 65536, 65536) < 0)
46 return 0;
47 fp = (struct Flags*)(p + 65536 - sizeof(struct Flags));
48 set(fp);
49 if (fp->b > 0)
50 return (bar(fp->d));
51 return 1;
52 }