
On Wed, Dec 14, 2005 at 02:17:17PM -0000, Simon Marlow wrote:
Suppose you create two top-level IORefs with the same type, like this:
var1 = unsafePerformIO $ newIORef 0 var2 = unsafePerformIO $ newIORef 0
GHC's CSE optimisation will common these up - after all, it's the same expression, so it must yield the same result, right?
Ah, yes. Thanks for explanation.
To turn this off, we use -fno-cse. It's good practice to use -fno-cse whenever you use top-level mutable objects of any kind. You can put it in the source file:
{-# OPTIONS_GHC -fno-cse #-}
at the top of your file.
How about a new pragma: {-# OPTIMIZER_HANDS_OFF var1 #-} ;-) Best regards Tomasz -- I am searching for a programmer who is good at least in some of [Haskell, ML, C++, Linux, FreeBSD, math] for work in Warsaw, Poland