Mercurial > hg > CbC > CbC_gcc
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 } |