20050826-1.c

来自「用于进行gcc测试」· C语言 代码 · 共 47 行

C
47
字号
/* Test whether strncmp has not been "optimized" into memcmp   nor any code with memcmp semantics.  *//* { dg-do run { target i?86-*-linux* x86_64-*-linux* ia64-*-linux* alpha*-*-linux* powerpc*-*-linux* s390*-*-linux* sparc*-*-linux* *-*-darwin* } } *//* { dg-options "-O2" } */#include <stddef.h>#include <stdio.h>#include <sys/mman.h>/* Darwin spells this differently */#ifndef MAP_ANONYMOUS#define MAP_ANONYMOUS MAP_ANON#endif#include <stdlib.h>    struct Flags { int filler[18]; unsigned int a:14; unsigned int b:14; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned int f:1;    };static void __attribute__((noinline)) set (struct Flags *);static void set (struct Flags *fp){  fp->b = 5;  fp->d = 1;}static int __attribute__((noinline)) bar (int);static int bar(int x) { return !(x==1); }int main (void){  char *p = mmap (NULL, 131072, PROT_READ | PROT_WRITE,                  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);  struct Flags *fp;  if (p == MAP_FAILED)    return 0;  if (munmap (p + 65536, 65536) < 0)    return 0;  fp = (struct Flags*)(p + 65536 - sizeof(struct Flags));  set(fp);  if (fp->b > 0)    return (bar(fp->d));  return 1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?