Hello,
When compiling the following function with 32 bit poly, the compiler does not return (tried on Unixes). No problem with 64 bit poly.
fun h x = let val m = 0wx5bd1e995 val h0 = Word.xorb( x, 0wx1e3779b9) val k0 = x * m val k1 = Word.xorb( k0, Word.>>( k0, Word.fromInt 24)) val k2 = k1 * m val h1 = h0 * m in Word.xorb( h1, k2 ) end;
Best Regards, Bernard.
Hi Bernard, Thanks for reporting that. It was a silly error in the code that detects when a multiplication is by a power of two. I've fixed it in SVN trunk but it's probably something that should be back-ported to the 5.5 fixes branch. Note that you will have to run "make compiler" after "make" to pick up the fix.
Best regards, David
On 06/10/2012 17:41, Bernard Berthomieu wrote:
Hello,
When compiling the following function with 32 bit poly, the compiler does not return (tried on Unixes). No problem with 64 bit poly.
fun h x = let val m = 0wx5bd1e995 val h0 = Word.xorb( x, 0wx1e3779b9) val k0 = x * m val k1 = Word.xorb( k0, Word.>>( k0, Word.fromInt 24)) val k2 = k1 * m val h1 = h0 * m in Word.xorb( h1, k2 ) end;
Best Regards, Bernard.
polyml mailing list polyml@inf.ed.ac.uk http://lists.inf.ed.ac.uk/mailman/listinfo/polyml