modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/string-opt-18.c (about)

     1  /* Copyright (C) 2003  Free Software Foundation.
     2  
     3     Test equal pointer optimizations don't break anything.
     4  
     5     Written by Roger Sayle, July 14, 2003.  */
     6  
     7  extern void abort ();
     8  typedef __SIZE_TYPE__ size_t;
     9  
    10  extern void *memcpy(void*, const void*, size_t);
    11  extern void *mempcpy(void*, const void*, size_t);
    12  extern void *memmove(void*, const void*, size_t);
    13  extern char *strcpy(char*, const char*);
    14  extern int memcmp(const void*, const void*, size_t);
    15  extern int strcmp(const char*, const char*);
    16  extern int strncmp(const char*, const char*, size_t);
    17  
    18  
    19  void test1 (void *ptr)
    20  {
    21    if (memcpy(ptr,ptr,8) != ptr)
    22      abort ();
    23  }
    24  
    25  void test2 (char *ptr)
    26  {
    27    if (mempcpy(ptr,ptr,8) != ptr+8)
    28      abort ();
    29  }
    30  
    31  void test3 (void *ptr)
    32  {
    33    if (memmove(ptr,ptr,8) != ptr)
    34      abort ();
    35  }
    36  
    37  void test4 (char *ptr)
    38  {
    39    if (strcpy(ptr,ptr) != ptr)
    40      abort ();
    41  }
    42  
    43  void test5 (void *ptr)
    44  {
    45    if (memcmp(ptr,ptr,8) != 0)
    46      abort ();
    47  }
    48  
    49  void test6 (const char *ptr)
    50  {
    51    if (strcmp(ptr,ptr) != 0)
    52      abort ();
    53  }
    54  
    55  void test7 (const char *ptr)
    56  {
    57    if (strncmp(ptr,ptr,8) != 0)
    58      abort ();
    59  }
    60  
    61  
    62  int main ()
    63  {
    64    char buf[10];
    65  
    66    test1 (buf);
    67    test2 (buf);
    68    test3 (buf);
    69    test4 (buf);
    70    test5 (buf);
    71    test6 (buf);
    72    test7 (buf);
    73  
    74    return 0;
    75  }
    76