diff --git a/ixset.cabal b/ixset.cabal
--- a/ixset.cabal
+++ b/ixset.cabal
@@ -1,5 +1,5 @@
 Name:                ixset
-Version:             1.1.1.1
+Version:             1.1.1.2
 Synopsis:            Efficient relational queries on Haskell sets.
 Description:
     Create and query sets that are indexed by multiple indices.
@@ -11,7 +11,7 @@
 Category:            Data Structures
 Build-Type:          Simple
 Cabal-Version:       >= 1.10
-tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC==8.6.1, GHC==8.8.1
+tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.2
 
 source-repository head
     type:     git
@@ -21,7 +21,7 @@
   Build-Depends:     base >=4.7 && < 5, syb
 
   if !impl(ghc >= 8.0)
-    build-depends:     semigroups >= 0.18 && < 0.20
+    build-depends:     semigroups >= 0.18 && < 0.21
 
   Build-Depends:       containers >=0.5.5.1,
                        safecopy,
diff --git a/src/Data/IxSet.hs b/src/Data/IxSet.hs
--- a/src/Data/IxSet.hs
+++ b/src/Data/IxSet.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE UndecidableInstances, OverlappingInstances, FlexibleInstances,
+{-# LANGUAGE UndecidableInstances, OverlappingInstances, FlexibleContexts, FlexibleInstances,
              MultiParamTypeClasses, TemplateHaskell, RankNTypes,
              FunctionalDependencies, DeriveDataTypeable,
              GADTs, CPP, ScopedTypeVariables #-}
@@ -367,8 +367,13 @@
                    getCalType (ForallT _names _ t') = getCalType t'
                    getCalType (AppT (AppT ArrowT _) t') = t'
                    getCalType t' = error ("Unexpected type in getCalType: " ++ pprint t')
+#if MIN_VERSION_template_haskell(2,17,0)
+                   binders' = map (fmap (\() -> SpecifiedSpec)) (binders :: [TyVarBndr ()])
+#else
+                   binders' = binders
+#endif
                    mkEntryPoint n = (conE 'Ix) `appE`
-                                    (sigE (varE 'Map.empty) (forallT binders (return context) $
+                                    (sigE (varE 'Map.empty) (forallT binders' (return context) $
                                                              appT (appT (conT ''Map) (conT n))
                                                                       (appT (conT ''Set) typeCon))) `appE`
                                     (varE 'flattenWithCalcs `appE` varE calName)
@@ -393,7 +398,11 @@
 isSigD (SigD _ _) = True
 isSigD _ = False
 
-#if MIN_VERSION_template_haskell(2,4,0)
+#if MIN_VERSION_template_haskell(2,17,0)
+tyVarBndrToName :: TyVarBndr a -> Name
+tyVarBndrToName (PlainTV nm _) = nm
+tyVarBndrToName (KindedTV nm _ _) = nm
+#elif MIN_VERSION_template_haskell(2,4,0)
 tyVarBndrToName :: TyVarBndr -> Name
 tyVarBndrToName (PlainTV nm) = nm
 tyVarBndrToName (KindedTV nm _) = nm
diff --git a/src/Data/IxSet/Ix.hs b/src/Data/IxSet/Ix.hs
--- a/src/Data/IxSet/Ix.hs
+++ b/src/Data/IxSet/Ix.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE UndecidableInstances, OverlappingInstances, FlexibleInstances,
+{-# LANGUAGE UndecidableInstances, OverlappingInstances, FlexibleContexts, FlexibleInstances,
              MultiParamTypeClasses, TemplateHaskell, PolymorphicComponents,
              DeriveDataTypeable,ExistentialQuantification #-}
 
