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

     1  /* PR target/84524 */
     2  
     3  __attribute__((noipa)) void
     4  foo (unsigned short *x)
     5  {
     6    unsigned short i, v;
     7    unsigned char j;
     8    for (i = 0; i < 256; i++)
     9      {
    10        v = i << 8;
    11        for (j = 0; j < 8; j++)
    12  	if (v & 0x8000)
    13  	  v = (v << 1) ^ 0x1021;
    14  	else
    15  	  v = v << 1;
    16        x[i] = v;
    17      }
    18  }
    19  
    20  int
    21  main ()
    22  {
    23    unsigned short a[256];
    24  
    25    foo (a);
    26    for (int i = 0; i < 256; i++)
    27      {
    28        unsigned short v = i << 8;
    29        for (int j = 0; j < 8; j++)
    30  	{
    31  	  asm volatile ("" : "+r" (v));
    32  	  if (v & 0x8000)
    33  	    v = (v << 1) ^ 0x1021;
    34  	  else
    35  	    v = v << 1;
    36  	}
    37        if (a[i] != v)
    38  	__builtin_abort ();
    39      }
    40    return 0;
    41  }