diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for generic-storable-plugin
 
+## 0.2.2.0  -- 2018-09-29
+
+* Bump to 8.6
+
 ## 0.2.1.0  -- 2018-03-20
 
 * Bump to 8.4
diff --git a/derive-storable-plugin.cabal b/derive-storable-plugin.cabal
--- a/derive-storable-plugin.cabal
+++ b/derive-storable-plugin.cabal
@@ -2,7 +2,7 @@
 -- further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                derive-storable-plugin
-version:             0.2.1.0
+version:             0.2.2.0
 synopsis:            GHC core plugin supporting the derive-storable package.
 description:         The package helps derive-storable package in forcing compile time evaluation of
                      sizes, alignments and offsets.
@@ -16,8 +16,12 @@
 build-type:          Simple
 extra-source-files:  ChangeLog.md README.md
 cabal-version:       >=1.10
-tested-with:         GHC==8.0.1, GHC==8.0.2, GHC==8.2.1, GHC==8.4.1
+tested-with:         GHC==8.0.1, GHC==8.0.2, GHC==8.2.1, GHC==8.4.1, GHC==8.6.1
 
+source-repository head
+  type:     git
+  location: https://www.github.com/mkloczko/derive-storable-plugin/
+
 library
   exposed-modules:       Foreign.Storable.Generic.Plugin
                        , Foreign.Storable.Generic.Plugin.Internal
@@ -29,7 +33,7 @@
                        , Foreign.Storable.Generic.Plugin.Internal.Types
   -- other-modules:       
   other-extensions:    DeriveGeneric, DeriveAnyClass, PatternGuards
-  build-depends:       base >=4.9 && <4.12, ghc >= 8.0 && <8.5, ghci >= 8.0 && <8.5, derive-storable >= 0.1.1 && < 0.2
+  build-depends:       base >=4.9 && <4.13, ghc >= 8.0 && <8.7, ghci >= 8.0 && <8.7, derive-storable >= 0.1.1 && < 0.2
   hs-source-dirs:      src
   default-language:    Haskell2010
 
@@ -39,7 +43,7 @@
   default-language:    Haskell2010
   other-modules:       TestCases, TestCasesOptimized
   Main-is:             Main.hs
-  build-depends:       base >= 4.9 && < 4.12, deepseq, criterion >= 1.1.0
+  build-depends:       base >= 4.9 && < 4.13, deepseq, criterion >= 1.1.0
                     ,  derive-storable, derive-storable-plugin
 test-suite ids-concrete
   type:                exitcode-stdio-1.0
@@ -47,7 +51,7 @@
   default-language:    Haskell2010
   other-modules:       Types, Instances
   Main-is:             Main.hs
-  build-depends:       base >= 4.9 && < 4.12, ghc >= 8.0 && <8.5, ghci >= 8.0 && <8.5, ghc-paths
+  build-depends:       base >= 4.9 && < 4.13, ghc >= 8.0 && <8.7, ghci >= 8.0 && <8.7, ghc-paths
                     ,  derive-storable, derive-storable-plugin, hspec >= 2.4, QuickCheck >= 2.10
 
 test-suite ids-handwritten
@@ -56,7 +60,7 @@
   default-language:    Haskell2010
   other-modules:       Types, Instances
   Main-is:             Main.hs
-  build-depends:       base >= 4.9 && < 4.12, ghc >= 8.0 && <8.5, ghci >= 8.0 && <8.5, ghc-paths
+  build-depends:       base >= 4.9 && < 4.13, ghc >= 8.0 && <8.7, ghci >= 8.0 && <8.7, ghc-paths
                     ,  derive-storable, derive-storable-plugin, hspec >= 2.4, QuickCheck >= 2.10
 
 test-suite ids-newtype
@@ -65,7 +69,7 @@
   default-language:    Haskell2010
   other-modules:       Types, Instances
   Main-is:             Main.hs
-  build-depends:       base >= 4.9 && < 4.12, ghc >= 8.0 && <8.5, ghci >= 8.0 && <8.5, ghc-paths
+  build-depends:       base >= 4.9 && < 4.13, ghc >= 8.0 && <8.7, ghci >= 8.0 && <8.7, ghc-paths
                     ,  derive-storable, derive-storable-plugin, hspec >= 2.4, QuickCheck >= 2.10
 
 test-suite ids-parametrised-spec
@@ -74,7 +78,7 @@
   default-language:    Haskell2010
   other-modules:       Types, Instances, Usage
   Main-is:             Main.hs
-  build-depends:       base >= 4.9 && < 4.12, ghc >= 8.0 && <8.5, ghci >= 8.0 && <8.5, ghc-paths
+  build-depends:       base >= 4.9 && < 4.13, ghc >= 8.0 && <8.7, ghci >= 8.0 && <8.7, ghc-paths
                     ,  derive-storable, derive-storable-plugin, hspec >= 2.4, QuickCheck >= 2.10
 
 test-suite ids-typesynonym
@@ -83,5 +87,5 @@
   default-language:    Haskell2010
   other-modules:       Types, Instances
   Main-is:             Main.hs
-  build-depends:       base >= 4.9 && < 4.12, ghc >= 8.0 && <8.5, ghci >= 8.0 && <8.5, ghc-paths
+  build-depends:       base >= 4.9 && < 4.13, ghc >= 8.0 && <8.7, ghci >= 8.0 && <8.7, ghc-paths
                     ,  derive-storable, derive-storable-plugin, hspec >= 2.4, QuickCheck >= 2.10
diff --git a/src/Foreign/Storable/Generic/Plugin/Internal/Compile.hs b/src/Foreign/Storable/Generic/Plugin/Internal/Compile.hs
--- a/src/Foreign/Storable/Generic/Plugin/Internal/Compile.hs
+++ b/src/Foreign/Storable/Generic/Plugin/Internal/Compile.hs
@@ -9,6 +9,7 @@
 The core of compile and substitute optimisations.
 
 -}
+{-#LANGUAGE CPP#-}
 module Foreign.Storable.Generic.Plugin.Internal.Compile 
     ( 
     -- Compilation
@@ -42,6 +43,9 @@
 import Prelude hiding ((<>))
 import CoreSyn (Bind(..),Expr(..), CoreExpr, CoreBind, CoreProgram, Alt, AltCon(..), isId, Unfolding(..))
 import Literal (Literal(..))
+#if MIN_VERSION_GLASGOW_HASKELL(8,6,0,0)
+import Literal (LitNumType(..))
+#endif
 import Id  (isLocalId, isGlobalId,setIdInfo,Id)
 import IdInfo (IdInfo(..))
 import Var (Var(..), idInfo)
@@ -59,8 +63,9 @@
 -- Haskell types 
 import Type (isAlgType, splitTyConApp_maybe)
 import TyCon (tyConName, algTyConRhs, visibleDataCons)
-import TyCoRep (Type(..), TyBinder(..))
-import TysWiredIn (intDataCon)
+import TyCoRep (Type(..), TyBinder(..), TyLit(..))
+import TysWiredIn
+import TysPrim (intPrimTy)
 import DataCon    (dataConWorkId,dataConOrigArgTys) 
 
 import MkCore (mkWildValBinder)
@@ -73,7 +78,6 @@
 import GHCi.RemoteTypes
 
 -- Used to create types
-import TysWiredIn
 import PrelNames (buildIdKey, augmentIdKey)
 import DataCon (dataConWorkId)
 import BasicTypes (Boxity(..))
@@ -122,11 +126,20 @@
 -- Int substitution --
 ----------------------
 
+-- | A small helper - create an integer literal.
+intLiteral :: (Integral a) => a -> CoreExpr
+#if MIN_VERSION_GLASGOW_HASKELL(8,6,0,0)
+intLiteral i =  Lit $ LitNumber LitNumInt (fromIntegral i) intPrimTy
+#else
+intLiteral i = Lit $ MachInt $ fromIntegral i
+#endif
+
 -- | Create an expression of form: \x -> 16
 intToExpr :: Type -> Int -> CoreExpr
 intToExpr t i = Lam wild $ App fun arg
     where fun = Var $ dataConWorkId intDataCon
-          arg = Lit $ MachInt $ fromIntegral i
+          -- arg = Lit $ MachInt $ fromIntegral i
+          arg = intLiteral i
           wild= mkWildValBinder t 
 
 -- | For gsizeOf and galignment - calculate the variables.
@@ -197,7 +210,7 @@
 intListExpr'  []    acc = acc
 intListExpr' (l:ls) acc = intListExpr' ls $ App int_cons acc
     where int_t_cons = App (Var $ dataConWorkId consDataCon) (Type intTy) 
-          int_val    = App (Var $ dataConWorkId intDataCon ) (Lit $ MachInt $ fromIntegral l) 
+          int_val    = App (Var $ dataConWorkId intDataCon ) (intLiteral l)
           int_cons   = App int_t_cons int_val
 
 -- | Compile expression to list and then write it back to core expr.
@@ -209,7 +222,7 @@
 
 -- | Create a int prim expression.
 intPrimValExpr :: Int -> CoreExpr
-intPrimValExpr i = Lit $ MachInt $ fromIntegral i 
+intPrimValExpr i = intLiteral i
 
 -- | Compile expression to int prim and then write it back to core expr.
 exprToIntVal :: Id -> CoreExpr -> CoreM (Either Error OffsetScope)
