github.com/cznic/cc@v0.0.0-20181122101902-d673e9b70d4d/testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/lib/memmove.c (about)

     1  extern void abort (void);
     2  extern int inside_main;
     3  
     4  __attribute__ ((__noinline__))
     5  void *
     6  memmove (void *dst, const void *src, __SIZE_TYPE__ n)
     7  {
     8    char *dstp;
     9    const char *srcp;
    10  
    11  #ifdef __OPTIMIZE__
    12    if (inside_main)
    13      abort ();
    14  #endif
    15  
    16    srcp = src;
    17    dstp = dst;
    18    if (srcp < dstp)
    19      while (n-- != 0)
    20        dstp[n] = srcp[n];
    21    else
    22      while (n-- != 0)
    23        *dstp++ = *srcp++;
    24  
    25    return dst;
    26  }
    27  
    28  void
    29  bcopy (const void *src, void *dst, __SIZE_TYPE__ n)
    30  {
    31    memmove (dst, src, n);
    32  }