/* Based on qemu's util/crc32c.c, in turn based on the Linux kernel cryptographic crc32c module. */ #include extern const uint32_t crc32c_table[256]; uint32_t crc32c(uint32_t crc, const uint8_t *data, unsigned int length) { while (length--) { /* { dg-bogus "infinite loop" } */ crc = crc32c_table[(crc ^ *data++) & 0xFFL] ^ (crc >> 8); } return crc^0xffffffff; }