modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/bcopy.c (about)

     1  /* { dg-add-options stack_size } */
     2  
     3  void
     4  bcopy1 (s, d, c)
     5       long long *s;
     6       long long *d;
     7       int c;
     8  {
     9    int i;
    10    c = c / 8;
    11    for (i = 0;  i < c;  i++)
    12      d[i] = s[i];
    13  }
    14  
    15  void
    16  bcopy2 (s, d, c)
    17       long *s;
    18       long *d;
    19       int c;
    20  {
    21    int i;
    22    c = c / 4;
    23    for (i = 0;  i < c;  i++)
    24      d[i] = s[i];
    25  }
    26  
    27  
    28  void
    29  bcopy3 (s, d, c)
    30       char *s;
    31       char *d;
    32       int c;
    33  {
    34    long long z0, z1;
    35    int r = d - s;
    36  
    37    int i;
    38  
    39    c /= 16;
    40  
    41    z0 = *((long long *) s);
    42    s += 8;
    43    z1 = *((long long *) s);
    44    s += 8;
    45    for (i = 0; i < c; i++)
    46      {
    47        *(long long *)(s + r) = z0;
    48        z0 = *((long long *) s);
    49        s += 8;
    50        *(long long *)(s + r) = z1;
    51        z1 = *((long long *) s);
    52        s += 8;
    53      }
    54  }
    55  
    56  #if defined(STACK_SIZE) && STACK_SIZE < 16384
    57  #define BYTES STACK_SIZE
    58  #else
    59  #define BYTES 16384
    60  #endif
    61  
    62  main ()
    63  {
    64    long long s[BYTES / 8];
    65    long long d[BYTES / 8];
    66    int i;
    67  
    68    for (i = 1; i < 67108864 / BYTES; i++)
    69      bcopy (s, d, BYTES);
    70  }