
Bulat Ziganshin
Hello Jon,
Tuesday, October 10, 2006, 1:18:52 PM, you wrote:
Surely all but one of the comparisons is unnecessary? If you use `compare` instead of (==) and friends, won't one do (I'm assuming that the compiler can convert cases on LT, EQ and GT into something sensible -- after all, wasn't that the purpose of compare?)?
it will too smart for GHC. actual code is:
compareInt# :: Int# -> Int# -> Ordering compareInt# x# y# | x# <# y# = LT | x# ==# y# = EQ | otherwise = GT
But once that's been inlined and through whatever code generator, what then? If it doesn't get turned into one test on the data and conditional jumps on sign bits, something isn't doing a thorough job... -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk