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)
commit0d66095d5080f190d18d6d5f8b85ac7138236cb0
tree7017939b0e5c85a8443b0e867ce877b8cf024ae5
parentd3317d459cf61af52420713f6ac0f55ce48322cd
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>
libraries/base/Data/Bits.hs