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

     1  extern void abort(void);
     2  extern void exit(int);
     3  
     4  void
     5  foo (char *bp, unsigned n)
     6  {
     7    register char c;
     8    register char *ep = bp + n;
     9    register char *sp;
    10  
    11    while (bp < ep)
    12      {
    13        sp = bp + 3;
    14        c = *sp;
    15        *sp = *bp;
    16        *bp++ = c;
    17        sp = bp + 1;
    18        c = *sp;
    19        *sp = *bp;
    20        *bp++ = c;
    21        bp += 2;
    22      }
    23  }
    24  
    25  int main(void)
    26  {
    27    int one = 1;
    28  
    29    if (sizeof(int) != 4 * sizeof(char))
    30      exit(0);
    31  
    32    foo((char *)&one, sizeof(one));
    33    foo((char *)&one, sizeof(one));
    34  
    35    if (one != 1)
    36      abort();
    37  
    38    exit(0);
    39  }