For me, on openSuSE 10.3 x86_64, the 11.x icpc compilers, and g++, agree that failure to declare memcmp, memcpy, and memset in the scopes where they are used constitutes a fatal error. Is your compiler error message file readable?

For me, on openSuSE 10.3 x86_64, the 11.x icpc compilers, and g++, agree that failure to declare memcmp, memcpy, and memset in the scopes where they are used constitutes a fatal error. Is your compiler error message file readable?

Ah yeah -- collateral damage while stripping down the test case; interesting though that icpc for me isn't getting far enough to have noticed that.

Digging a bit more deeply over a morning cup of coffee, it looks like a problem with exponential compile time rather than a strictly infinite loop: commenting out all 48 calls to round1/round2/round3 in MD4::mix() lets the code compile. But leaving in the first of them: