(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
20050826-1.c
       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  }