diff --git a/ixset.cabal b/ixset.cabal
--- a/ixset.cabal
+++ b/ixset.cabal
@@ -1,5 +1,5 @@
 Name:                ixset
-Version:             1.0.6.1
+Version:             1.0.7
 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.8
-tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3
+tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
 
 source-repository head
     type:     git
diff --git a/src/Data/IxSet.hs b/src/Data/IxSet.hs
--- a/src/Data/IxSet.hs
+++ b/src/Data/IxSet.hs
@@ -330,8 +330,13 @@
     = do calInfo <- reify calName
          typeInfo <- reify typeName
          let (context,binders) = case typeInfo of
+#if MIN_VERSION_template_haskell(2,11,0)
+                                 TyConI (DataD ctxt _ nms _ _ _) -> (ctxt,nms)
+                                 TyConI (NewtypeD ctxt _ nms _ _ _) -> (ctxt,nms)
+#else
                                  TyConI (DataD ctxt _ nms _ _) -> (ctxt,nms)
                                  TyConI (NewtypeD ctxt _ nms _ _) -> (ctxt,nms)
+#endif
                                  TyConI (TySynD _ nms _) -> ([],nms)
                                  _ -> error "IxSet.inferIxSet typeInfo unexpected match"
 
@@ -351,7 +356,11 @@
                 dataCtxCon <- sequence dataCtxConQ
                 return (context ++ dataCtxCon)
          case calInfo of
+#if MIN_VERSION_template_haskell(2,11,0)
+           VarI _ t _ ->
+#else
            VarI _ t _ _ ->
+#endif
                let calType = getCalType t
                    getCalType (ForallT _names _ t') = getCalType t'
                    getCalType (AppT (AppT ArrowT _) t') = t'
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
@@ -54,9 +54,9 @@
 
 instance (SYBWC.Typeable1 Ix, SYBWC.Data ctx a, SYBWC.Sat (ctx (Ix a)))
        => SYBWC.Data ctx (Ix a) where
-    gfoldl = error "gfoldl Ix"
+    gfoldl _ _ _ _ = error "gfoldl Ix" :: w (Ix a)
     toConstr _ (Ix _ _)    = ixConstr
-    gunfold = error "gunfold Ix"
+    gunfold _ _ _ _ = error "gunfold Ix" :: c (Ix a)
     dataTypeOf _ _ = ixDataType
 
 -- modification operations
