Weird porting problem with read

Matt Chapman
Mon, 6 May 2002 00:03:37 +1000

Well, I figured it out myself in the end... it's gcc dodginess :/

numberToInt checks the number that's been read against minBound :: Int.
In the 64-bit STG C code this ends up being:


If I were to read the gcc warnings it would say:

Text/Read/Lex.hc:40: warning: decimal constant is so large that it is

and it seems to make a dodgy optimisation on that basis.

If I change the constant to -(2^63-1) instead of -2^63 it works, and
without the warning message.  Which seems like a compiler bug to me,
since -2^63 is a valid 64-bit signed number.  I'll see what the gcc
folks have to say.