https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117476

--- Comment #2 from David Binderman <dcb314 at hotmail dot com> ---
Partially reduced code:

void  printf ();
void
platform_main_end(int crc)
{
 printf ("checksum = %X\n", crc);
}
int crc32_tab[6];
int crc32_context = 4294967295;

void
crc32_byte (char b) {
 crc32_context =
  crc32_context >> 8 & 16777215 ^
  crc32_tab[(crc32_context ^ b) & 255];
}
static void
transparent_crc (long val)

 {
 long __trans_tmp_1 = val;

  {char b = val;

   crc32_context =
    crc32_context >> 8 & 16777215 ^
    crc32_tab[(crc32_context ^ val) & 255];
  }

  ;
  crc32_byte (val>>8) ;
  crc32_byte (val>>16) ;
  crc32_byte (val>>24) ;
  crc32_byte (val>>32) ;
  crc32_byte (val>>40) ;
  crc32_byte (val>>48) ;
  crc32_byte (val>>56) ;
 }
int g_2 ;
void  main ()
{
    {

     int i, j;

     i = 0;

     for (i; i < 256; i++) {
      unsigned crc = i;
      j = 8;

      for (j; j ; j--)
       if (crc & 1)
        crc = crc >> 1 ^ 3988292384;
        else
        crc >>= 1;


      crc32_tab[i] = crc;
     }
   }

    ;

        g_2 = -3;

    transparent_crc(g_2);
    platform_main_end(crc32_context ^ 4294967295);
}

Reply via email to