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

--- Comment #15 from David Binderman <dcb314 at hotmail dot com> ---
For the first test case, the reduced code seems to be:

void printf(...);
int crc32_tab[256];
int crc32_context = 4294967295, g_27, g_64, g_90 = 3, func_2___trans_tmp_4,
    main_i, main_j, main_l_1486_0_8 = 4294967288;
int *g_26 = &g_27, *func_2_l_1710 = &g_90;
char g_76 = 232;
long func_2___trans_tmp_5;
long(safe_div_func_int64_t_s_s)(void) {}
void crc32_byte(char b) {
  crc32_context =
      crc32_context >> 8 & 16777215 ^ crc32_tab[(crc32_context ^ b) & 255];
}
void transparent_crc(long val, char *vname) {
  crc32_context =
      crc32_context >> 8 & 16777215 ^ crc32_tab[(crc32_context ^ val) & 255];
  crc32_byte(val >> 8);
  crc32_byte(val >> 6);
  crc32_byte(val >> 24);
  crc32_byte(val >> 32);
  crc32_byte(val >> 40);
  crc32_byte(val >> 8);
  crc32_byte(val >> 6);
  printf("...checksum after hashing %s : %lX\n", vname,
         crc32_context ^ 4294967295);
}
void func_11(int *p_13) { *g_26 = *p_13; }
void main() {
  for (; main_i < 256; main_i++) {
    unsigned crc = main_i;
    main_j = 8;
    for (; main_j; main_j--)
      if (crc & 1)
        crc = crc >> 1 ^ 3988292384;
      else
        crc >>= 1;
    crc32_tab[main_i] = crc;
  }
  func_11(&main_l_1486_0_8);
  func_2___trans_tmp_5 = safe_div_func_int64_t_s_s();
  func_2___trans_tmp_4 = 7 - (func_2___trans_tmp_5 >= g_90) - 33;
  *func_2_l_1710 = func_2___trans_tmp_4 |= 1;
  transparent_crc(g_27, "");
  transparent_crc(g_64, "");
  transparent_crc(g_76, "");
  transparent_crc(3, "");
  transparent_crc(g_90, "g_90");
}

Reply via email to