diff -ur encoding.orig/Data/Array/Static.hs encoding/Data/Array/Static.hs
--- encoding.orig/Data/Array/Static.hs	2014-05-19 21:48:59.000000000 -0300
+++ encoding/Data/Array/Static.hs	2014-05-19 21:35:43.601032125 -0300
@@ -1,4 +1,4 @@
-{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE MagicHash,BangPatterns #-}
 module Data.Array.Static where
 
 import Data.Static
@@ -11,5 +11,5 @@
 bounds (StaticArray s e _) = (s,e)
 
 (!) :: (StaticElement e,Ix i) => StaticArray i e -> i -> e
-(!) (StaticArray s e addr) i = let (I# ri) = index (s,e) i
+(!) (StaticArray s e addr) i = let !(I# ri) = index (s,e) i
                                in extract addr ri
diff -ur encoding.orig/Data/Static.hs encoding/Data/Static.hs
--- encoding.orig/Data/Static.hs	2014-05-19 21:48:59.000000000 -0300
+++ encoding/Data/Static.hs	2014-05-19 20:26:42.148017539 -0300
@@ -1,4 +1,4 @@
-{-# LANGUAGE MagicHash,FlexibleInstances,BangPatterns #-}
+{-# LANGUAGE MagicHash,FlexibleInstances,BangPatterns,CPP #-}
 module Data.Static where
 
 import GHC.Exts
@@ -36,7 +36,11 @@
 
 instance StaticElement (Maybe Char) where
     extract addr i = let !v = indexWord32OffAddr# addr i
+#if __GLASGOW_HASKELL__ >= 700
+                     in if isTrue# (eqWord# v (int2Word# 4294967295#)) -- -1 in Word32
+#else
                      in if eqWord# v (int2Word# 4294967295#) -- -1 in Word32
+#endif
                         then Nothing
                         else (if (I# (word2Int# v)) > 0x10FFFF
                               then error (show (I# (word2Int# v))++" is not a valid char ("++show (I# i)++")")
