diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+### 0.5.8 [2019.11.26]
+* Allow building with GHC 8.10.
+
 ### 0.5.7 [2019.08.27]
 * Permit `deriveVia` to use "floating" `via` type variables, such as the `a`
   in:
diff --git a/deriving-compat.cabal b/deriving-compat.cabal
--- a/deriving-compat.cabal
+++ b/deriving-compat.cabal
@@ -1,5 +1,5 @@
 name:                deriving-compat
-version:             0.5.7
+version:             0.5.8
 synopsis:            Backports of GHC deriving extensions
 description:         Provides Template Haskell functions that mimic deriving
                      extensions that were introduced or modified in recent versions
@@ -73,6 +73,7 @@
                    , GHC == 8.4.4
                    , GHC == 8.6.5
                    , GHC == 8.8.1
+                   , GHC == 8.10.1
 cabal-version:       >=1.10
 
 source-repository head
@@ -130,7 +131,7 @@
     build-depends:     base                >= 4.3   && < 4.9
 
   if flag(template-haskell-2-11)
-    build-depends:     template-haskell    >= 2.11  && < 2.16
+    build-depends:     template-haskell    >= 2.11  && < 2.17
                      , ghc-boot-th
   else
     build-depends:     template-haskell    >= 2.5   && < 2.11
@@ -168,7 +169,7 @@
                      , hspec               >= 1.8
                      , QuickCheck          >= 2     && < 3
                      , tagged              >= 0.7   && < 1
-                     , template-haskell    >= 2.5   && < 2.16
+                     , template-haskell    >= 2.5   && < 2.17
   build-tool-depends:  hspec-discover:hspec-discover >= 1.8
 
   if flag(base-4-9)
diff --git a/src/Data/Deriving/Internal.hs b/src/Data/Deriving/Internal.hs
--- a/src/Data/Deriving/Internal.hs
+++ b/src/Data/Deriving/Internal.hs
@@ -1228,6 +1228,13 @@
 derivingCompatPackageKey = "deriving-compat-" ++ showVersion version
 #endif
 
+gHC_IX :: String
+#if MIN_VERSION_base(4,14,0)
+gHC_IX = "GHC.Ix"
+#else
+gHC_IX = "GHC.Arr"
+#endif
+
 mkDerivingCompatName_v :: String -> Name
 mkDerivingCompatName_v = mkNameG_v derivingCompatPackageKey "Data.Deriving.Internal"
 
@@ -1367,7 +1374,7 @@
 intHashTypeName = mkNameG_tc "ghc-prim" "GHC.Prim" "Int#"
 
 ixTypeName :: Name
-ixTypeName = mkNameG_tc "base" "GHC.Arr" "Ix"
+ixTypeName = mkNameG_tc "base" gHC_IX "Ix"
 
 readTypeName :: Name
 readTypeName = mkNameG_tc "base" "GHC.Read" "Read"
@@ -1490,10 +1497,10 @@
 idValName = mkNameG_v "base" "GHC.Base" "id"
 
 indexValName :: Name
-indexValName = mkNameG_v "base" "GHC.Arr" "index"
+indexValName = mkNameG_v "base" gHC_IX "index"
 
 inRangeValName :: Name
-inRangeValName = mkNameG_v "base" "GHC.Arr" "inRange"
+inRangeValName = mkNameG_v "base" gHC_IX "inRange"
 
 leAddrHashValName :: Name
 leAddrHashValName = mkNameG_v "ghc-prim" "GHC.Prim" "leAddr#"
@@ -1583,10 +1590,10 @@
 predValName = mkNameG_v "base" "GHC.Enum" "pred"
 
 rangeSizeValName :: Name
-rangeSizeValName = mkNameG_v "base" "GHC.Arr" "rangeSize"
+rangeSizeValName = mkNameG_v "base" gHC_IX "rangeSize"
 
 rangeValName :: Name
-rangeValName = mkNameG_v "base" "GHC.Arr" "range"
+rangeValName = mkNameG_v "base" gHC_IX "range"
 
 readFieldHash :: String -> ReadPrec a -> ReadPrec a
 readFieldHash fieldName readVal = do
@@ -1669,10 +1676,10 @@
 traverseValName = mkNameG_v "base" "Data.Traversable" "traverse"
 
 unsafeIndexValName :: Name
-unsafeIndexValName = mkNameG_v "base" "GHC.Arr" "unsafeIndex"
+unsafeIndexValName = mkNameG_v "base" gHC_IX "unsafeIndex"
 
 unsafeRangeSizeValName :: Name
-unsafeRangeSizeValName = mkNameG_v "base" "GHC.Arr" "unsafeRangeSize"
+unsafeRangeSizeValName = mkNameG_v "base" gHC_IX "unsafeRangeSize"
 
 unwrapMonadValName :: Name
 unwrapMonadValName = mkNameG_v "base" "Control.Applicative" "unwrapMonad"
