
On Thu, Aug 7, 2014 at 4:36 PM, Simon Marlow
I think doing the comparison with Integer is the right fix. Relying on Word being big enough for these things is technically wrong because we might be cross-compiling from a smaller word size.
That sounds like an easier fix and I will try that. Unfortunately working with Integers means lots of our convenience functions, such as wordsToBytes, go out the window, as the all work on Byte/WordOff. Here's an example that now gets more annoying: shouldInlinePrimOp dflags NewArrayOp [(CmmLit (CmmInt n _)), init] | wordsToBytes dflags (fromInteger n) <= maxInlineAllocSize dflags = Most of our array primops are likely* still wrong, as the code that generates them uses Int everywhere. Still also sounds like a problem for cross-compiling. * In some cases we might be lucky and the Int is never introspected any we just look at the bits (i.e. pretend it's a Word) when we generate code.