diff --git a/Data/Text/Show.hs b/Data/Text/Show.hs
--- a/Data/Text/Show.hs
+++ b/Data/Text/Show.hs
@@ -50,19 +50,19 @@
 unpackCString# addr# = unstream (S.streamCString# addr#)
 {-# NOINLINE unpackCString# #-}
 
-{-# RULES "TEXT literal" forall a.
+{-# RULES "TEXT literal" [2] forall a.
     unstream (S.map safe (S.streamList (GHC.unpackCString# a)))
       = unpackCString# a #-}
 
-{-# RULES "TEXT literal UTF8" forall a.
+{-# RULES "TEXT literal UTF8" [2] forall a.
     unstream (S.map safe (S.streamList (GHC.unpackCStringUtf8# a)))
       = unpackCString# a #-}
 
-{-# RULES "TEXT empty literal"
+{-# RULES "TEXT empty literal" [2]
     unstream (S.map safe (S.streamList []))
       = empty_ #-}
 
-{-# RULES "TEXT singleton literal" forall a.
+{-# RULES "TEXT singleton literal" [2] forall a.
     unstream (S.map safe (S.streamList [a]))
       = singleton_ a #-}
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,11 @@
+1.2.1.2
+
+* Bug fix: Run literal rewrite rules in simplifier phase 2.
+  The behavior of the simplifier changed in GHC 7.10.2,
+  causing these rules to fail to fire, leading to poor code generation
+  and long compilation times. See
+  [GHC Trac #10528](https://ghc.haskell.org/trac/ghc/ticket/10528).
+
 1.2.1.1
 
 * Expose unpackCString#, which you should never use.
diff --git a/text.cabal b/text.cabal
--- a/text.cabal
+++ b/text.cabal
@@ -1,5 +1,5 @@
 name:           text
-version:        1.2.1.1
+version:        1.2.1.2
 homepage:       https://github.com/bos/text
 bug-reports:    https://github.com/bos/text/issues
 synopsis:       An efficient packed Unicode text type.
