diff --git a/Text/Regex/PCRE/Light.hs b/Text/Regex/PCRE/Light.hs
index 80c28a0..7fc9581 100644
--- a/Text/Regex/PCRE/Light.hs
+++ b/Text/Regex/PCRE/Light.hs
@@ -77,6 +77,7 @@ import qualified Data.ByteString          as S
 #if __GLASGOW_HASKELL__ >= 608
 import qualified Data.ByteString.Internal as S
 import qualified Data.ByteString.Unsafe   as S
+import qualified System.IO.Unsafe         as U
 #else
 import qualified Data.ByteString.Base     as S
 #endif
@@ -193,7 +194,7 @@ compile s o = case compileM s o of
 -- > Left "nothing to repeat"
 --
 compileM :: S.ByteString -> [PCREOption] -> Either String Regex
-compileM str os = unsafePerformIO $
+compileM str os = U.unsafePerformIO $
   S.useAsCString str $ \pattern -> do
     alloca $ \errptr       -> do
     alloca $ \erroffset    -> do
@@ -263,7 +264,7 @@ compileM str os = unsafePerformIO $
 -- is returned.
 --
 match :: Regex -> S.ByteString -> [PCREExecOption] -> Maybe [S.ByteString]
-match (Regex pcre_fp _) subject os = unsafePerformIO $ do
+match (Regex pcre_fp _) subject os = U.unsafePerformIO $ do
   withForeignPtr pcre_fp $ \pcre_ptr -> do
     n_capt <- captureCount' pcre_ptr
 
@@ -324,7 +325,7 @@ match (Regex pcre_fp _) subject os = unsafePerformIO $ do
 
 
 captureCount :: Regex -> Int
-captureCount (Regex pcre_fp _) = unsafePerformIO $ do
+captureCount (Regex pcre_fp _) = U.unsafePerformIO $ do
   withForeignPtr pcre_fp $ \pcre_ptr -> do
     captureCount' pcre_ptr
 
