------- Comment #3 from spop at gcc dot gnu dot org 2009-12-15 21:41 ------- Reduced testcase as follows:
static void b2w(unsigned int *out, const unsigned char *in, unsigned int len) { const unsigned char *bpend = in + len; for (; in != bpend; in += 4, ++out) { *out = (unsigned int) (in[0] ) | (unsigned int) (in[3] << 24); } } static void md4step(unsigned int state[4], const unsigned char *data) { unsigned int A, X[16]; b2w(X, data, 64); state[0] += A; } void md4sum(void) { unsigned char final[128]; unsigned int state[4]; md4step(state, final); md4step(state, final + 64); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42221