Workaround failed constant-folding for zeroBits
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 1 Mar 2014 13:45:48 +0000 (14:45 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sat, 1 Mar 2014 13:45:48 +0000 (14:45 +0100)
commit2dbfcd70e53845d9119389cecc88411b47b70644
tree5bab67fb35051d7f2fc928733bdcdc9fd1485221
parent1dadd50d80240a03c403a07d4374b83cf9da4736
Workaround failed constant-folding for zeroBits

For some reason GHC fails to constant fold `zeroBits :: Int` and
`zeroBits :: Integer`; `ghc -show-iface` shows

  $fBitsInt_$czeroBits :: GHC.Types.Int
     {- Strictness: m,
        Unfolding: (GHC.Types.I# (GHC.Prim.andI# 1 (GHC.Prim.notI# 1))) -}

Otoh, constant-folding works as expected, reducing `zeroBits` to 0 constant
for the other integer-types (= {Word,Int}{8,16,32,64}` and `Word`). So this
quickfix is actually just treating the symptom rather than the cause.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Data/Bits.hs