diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -509,8 +509,9 @@
    | Opt_DoCmmLinting
    | Opt_DoAsmLinting
    | Opt_DoAnnotationLinting
-   | Opt_NoLlvmMangler                 -- hidden flag
-   | Opt_FastLlvm                      -- hidden flag
+   | Opt_NoLlvmMangler                  -- hidden flag
+   | Opt_FastLlvm                       -- hidden flag
+   | Opt_NoTypeableBinds
 
    | Opt_WarnIsError                    -- -Werror; makes warnings fatal
    | Opt_ShowWarnGroups                 -- Show the group a warning belongs to
@@ -3475,6 +3476,8 @@
         (NoArg (setGeneralFlag Opt_NoLlvmMangler)) -- hidden flag
   , make_ord_flag defGhcFlag "fast-llvm"
         (NoArg (setGeneralFlag Opt_FastLlvm)) -- hidden flag
+  , make_ord_flag defGhcFlag "dno-typeable-binds"
+        (NoArg (setGeneralFlag Opt_NoTypeableBinds))
   , make_ord_flag defGhcFlag "ddump-debug"
         (setDumpFlag Opt_D_dump_debug)
   , make_ord_flag defGhcFlag "ddump-json"
diff --git a/compiler/main/SysTools/Terminal.hs b/compiler/main/SysTools/Terminal.hs
--- a/compiler/main/SysTools/Terminal.hs
+++ b/compiler/main/SysTools/Terminal.hs
@@ -4,27 +4,24 @@
 
 import GhcPrelude
 
-#if defined MIN_VERSION_terminfo
+#if defined(MIN_VERSION_terminfo)
 import Control.Exception (catch)
 import Data.Maybe (fromMaybe)
 import System.Console.Terminfo (SetupTermError, Terminal, getCapability,
                                 setupTermFromEnv, termColors)
 import System.Posix (queryTerminal, stdError)
-#elif defined mingw32_HOST_OS
+#elif defined(mingw32_HOST_OS)
 import Control.Exception (catch, try)
 import Data.Bits ((.|.), (.&.))
-import Data.List (isInfixOf, isPrefixOf, isSuffixOf)
-import Foreign (FunPtr, Ptr, allocaBytes, castPtrToFunPtr,
-                peek, plusPtr, sizeOf, with)
-import Foreign.C (CInt(..), CWchar, peekCWStringLen)
+import Foreign (Ptr, peek, with)
 import qualified Graphics.Win32 as Win32
 import qualified System.Win32 as Win32
 #endif
 
-#if defined mingw32_HOST_OS && !defined WINAPI
-# if defined i386_HOST_ARCH
+#if defined(mingw32_HOST_OS) && !defined(WINAPI)
+# if defined(i386_HOST_ARCH)
 #  define WINAPI stdcall
-# elif defined x86_64_HOST_ARCH
+# elif defined(x86_64_HOST_ARCH)
 #  define WINAPI ccall
 # else
 #  error unknown architecture
@@ -34,7 +31,7 @@
 -- | Check if ANSI escape sequences can be used to control color in stderr.
 stderrSupportsAnsiColors :: IO Bool
 stderrSupportsAnsiColors = do
-#if defined MIN_VERSION_terminfo
+#if defined(MIN_VERSION_terminfo)
   queryTerminal stdError `andM` do
     (termSupportsColors <$> setupTermFromEnv)
       `catch` \ (_ :: SetupTermError) ->
@@ -52,7 +49,7 @@
     termSupportsColors :: Terminal -> Bool
     termSupportsColors term = fromMaybe 0 (getCapability term termColors) > 0
 
-#elif defined mingw32_HOST_OS
+#elif defined(mingw32_HOST_OS)
   h <- Win32.getStdHandle Win32.sTD_ERROR_HANDLE
          `catch` \ (_ :: IOError) ->
            pure Win32.nullHANDLE
@@ -61,26 +58,15 @@
     else do
       eMode <- try (getConsoleMode h)
       case eMode of
-        Left (_ :: IOError) -> queryCygwinTerminal h
+        Left (_ :: IOError) -> Win32.isMinTTYHandle h
+                                 -- Check if the we're in a MinTTY terminal
+                                 -- (e.g., Cygwin or MSYS2)
         Right mode
           | modeHasVTP mode -> pure True
           | otherwise       -> enableVTP h mode
 
   where
 
-    queryCygwinTerminal :: Win32.HANDLE -> IO Bool
-    queryCygwinTerminal h = do
-        fileType <- Win32.getFileType h
-        if fileType /= Win32.fILE_TYPE_PIPE
-          then pure False
-          else do
-            fn <- getFileNameByHandle h
-            pure (("\\cygwin-" `isPrefixOf` fn || "\\msys-" `isPrefixOf` fn) &&
-                  "-pty" `isInfixOf` fn &&
-                  "-master" `isSuffixOf` fn)
-      `catch` \ (_ :: IOError) ->
-        pure False
-
     enableVTP :: Win32.HANDLE -> Win32.DWORD -> IO Bool
     enableVTP h mode = do
         setConsoleMode h (modeAddVTP mode)
@@ -111,42 +97,6 @@
 
 foreign import WINAPI unsafe "windows.h SetConsoleMode" c_SetConsoleMode
   :: Win32.HANDLE -> Win32.DWORD -> IO Win32.BOOL
-
-fileNameInfo :: CInt
-fileNameInfo = 2
-
-mAX_PATH :: Num a => a
-mAX_PATH = 260
-
-getFileNameByHandle :: Win32.HANDLE -> IO String
-getFileNameByHandle h = do
-  let sizeOfDWORD = sizeOf (undefined :: Win32.DWORD)
-  let sizeOfWchar = sizeOf (undefined :: CWchar)
-  -- note: implicitly assuming that DWORD has stronger alignment than wchar_t
-  let bufSize = sizeOfDWORD + mAX_PATH * sizeOfWchar
-  allocaBytes bufSize $ \ buf -> do
-    getFileInformationByHandleEx h fileNameInfo buf (fromIntegral bufSize)
-    len :: Win32.DWORD <- peek buf
-    let len' = fromIntegral len `div` sizeOfWchar
-    peekCWStringLen (buf `plusPtr` sizeOfDWORD, min len' mAX_PATH)
-
-getFileInformationByHandleEx
-  :: Win32.HANDLE -> CInt -> Ptr a -> Win32.DWORD -> IO ()
-getFileInformationByHandleEx h cls buf bufSize = do
-  lib <- Win32.getModuleHandle (Just "kernel32.dll")
-  ptr <- Win32.getProcAddress lib "GetFileInformationByHandleEx"
-  let c_GetFileInformationByHandleEx =
-        mk_GetFileInformationByHandleEx (castPtrToFunPtr ptr)
-  Win32.failIfFalse_ "getFileInformationByHandleEx"
-    (c_GetFileInformationByHandleEx h cls buf bufSize)
-
-type F_GetFileInformationByHandleEx a =
-  Win32.HANDLE -> CInt -> Ptr a -> Win32.DWORD -> IO Win32.BOOL
-
-foreign import WINAPI "dynamic"
-  mk_GetFileInformationByHandleEx
-  :: FunPtr (F_GetFileInformationByHandleEx a)
-  -> F_GetFileInformationByHandleEx a
 
 #else
    pure False
diff --git a/compiler/utils/Binary.hs b/compiler/utils/Binary.hs
--- a/compiler/utils/Binary.hs
+++ b/compiler/utils/Binary.hs
@@ -854,6 +854,8 @@
     put_ bh Word8Rep        = putByte bh 13
     put_ bh Int16Rep        = putByte bh 14
     put_ bh Word16Rep       = putByte bh 15
+#endif
+#if __GLASGOW_HASKELL__ >= 809
     put_ bh Int32Rep        = putByte bh 16
     put_ bh Word32Rep       = putByte bh 17
 #endif
@@ -878,6 +880,8 @@
           13 -> pure Word8Rep
           14 -> pure Int16Rep
           15 -> pure Word16Rep
+#endif
+#if __GLASGOW_HASKELL__ >= 809
           16 -> pure Int32Rep
           17 -> pure Word32Rep
 #endif
diff --git a/compiler/utils/FastString.hs b/compiler/utils/FastString.hs
--- a/compiler/utils/FastString.hs
+++ b/compiler/utils/FastString.hs
@@ -78,7 +78,7 @@
 
         -- ** Internal
         getFastStringTable,
-        hasZEncoding,
+        getFastStringZEncCounter,
 
         -- * PtrStrings
         PtrString (..),
@@ -117,7 +117,6 @@
 import System.IO
 import Data.Data
 import Data.IORef
-import Data.Maybe       ( isJust )
 import Data.Char
 import Data.Semigroup as Semi
 
@@ -172,20 +171,22 @@
 
 -- -----------------------------------------------------------------------------
 
-{-|
-A 'FastString' is an array of bytes, hashed to support fast O(1)
-comparison.  It is also associated with a character encoding, so that
-we know how to convert a 'FastString' to the local encoding, or to the
-Z-encoding used by the compiler internally.
+{-| A 'FastString' is a UTF-8 encoded string together with a unique ID. All
+'FastString's are stored in a global hashtable to support fast O(1)
+comparison.
 
-'FastString's support a memoized conversion to the Z-encoding via zEncodeFS.
+It is also associated with a lazy reference to the Z-encoding
+of this string which is used by the compiler internally.
 -}
-
 data FastString = FastString {
       uniq    :: {-# UNPACK #-} !Int, -- unique id
       n_chars :: {-# UNPACK #-} !Int, -- number of chars
       fs_bs   :: {-# UNPACK #-} !ByteString,
-      fs_ref  :: {-# UNPACK #-} !(IORef (Maybe FastZString))
+      fs_zenc :: FastZString
+      -- ^ Lazily computed z-encoding of this string.
+      --
+      -- Since 'FastString's are globally memoized this is computed at most
+      -- once for any given string.
   }
 
 instance Eq FastString where
@@ -246,6 +247,7 @@
 -}
 data FastStringTable = FastStringTable
   {-# UNPACK #-} !(IORef Int) -- the unique ID counter shared with all buckets
+  {-# UNPACK #-} !(IORef Int) -- number of computed z-encodings for all buckets
   (Array# (IORef FastStringTableSegment)) -- concurrent segments
 
 data FastStringTableSegment = FastStringTableSegment
@@ -318,11 +320,13 @@
                   (# s5#, segment #) -> case writeArray# a# i# segment s5# of
                     s6# -> loop a# (i# +# 1#) s6#
   uid <- newIORef 603979776 -- ord '$' * 0x01000000
+  n_zencs <- newIORef 0
   tab <- IO $ \s1# ->
     case newArray# numSegments# (panic "string_table") s1# of
       (# s2#, arr# #) -> case loop arr# 0# s2# of
         s3# -> case unsafeFreezeArray# arr# s3# of
-          (# s4#, segments# #) -> (# s4#, FastStringTable uid segments# #)
+          (# s4#, segments# #) ->
+            (# s4#, FastStringTable uid n_zencs segments# #)
 
   -- use the support wired into the RTS to share this CAF among all images of
   -- libHSghc
@@ -396,7 +400,8 @@
    * Otherwise, insert and return the string we created.
 -}
 
-mkFastStringWith :: (Int -> IO FastString) -> Ptr Word8 -> Int -> IO FastString
+mkFastStringWith
+    :: (Int -> IORef Int-> IO FastString) -> Ptr Word8 -> Int -> IO FastString
 mkFastStringWith mk_fs !ptr !len = do
   FastStringTableSegment lock _ buckets# <- readIORef segmentRef
   let idx# = hashToIndex# buckets# hash#
@@ -409,10 +414,10 @@
       -- only run partially and putMVar is not called after takeMVar.
       noDuplicate
       n <- get_uid
-      new_fs <- mk_fs n
+      new_fs <- mk_fs n n_zencs
       withMVar lock $ \_ -> insert new_fs
   where
-    !(FastStringTable uid segments#) = stringTable
+    !(FastStringTable uid n_zencs segments#) = stringTable
     get_uid = atomicModifyIORef' uid $ \n -> (n+1,n)
 
     !(I# hash#) = hashStr ptr len
@@ -482,30 +487,35 @@
 mkFastStringByteList :: [Word8] -> FastString
 mkFastStringByteList str = mkFastStringByteString (BS.pack str)
 
--- | Creates a Z-encoded 'FastString' from a 'String'
-mkZFastString :: String -> FastZString
-mkZFastString = mkFastZStringString
+-- | Creates a (lazy) Z-encoded 'FastString' from a 'String' and account
+-- the number of forced z-strings into the passed 'IORef'.
+mkZFastString :: IORef Int -> ByteString -> FastZString
+mkZFastString n_zencs bs = unsafePerformIO $ do
+  atomicModifyIORef' n_zencs $ \n -> (n+1, ())
+  return $ mkFastZStringString (zEncodeString (utf8DecodeByteString bs))
 
 mkNewFastString :: ForeignPtr Word8 -> Ptr Word8 -> Int -> Int
-                -> IO FastString
-mkNewFastString fp ptr len uid = do
-  ref <- newIORef Nothing
+                -> IORef Int -> IO FastString
+mkNewFastString fp ptr len uid n_zencs = do
+  let bs = BS.fromForeignPtr fp 0 len
+      zstr = mkZFastString n_zencs bs
   n_chars <- countUTF8Chars ptr len
-  return (FastString uid n_chars (BS.fromForeignPtr fp 0 len) ref)
+  return (FastString uid n_chars bs zstr)
 
 mkNewFastStringByteString :: ByteString -> Ptr Word8 -> Int -> Int
-                          -> IO FastString
-mkNewFastStringByteString bs ptr len uid = do
-  ref <- newIORef Nothing
+                          -> IORef Int -> IO FastString
+mkNewFastStringByteString bs ptr len uid n_zencs = do
+  let zstr = mkZFastString n_zencs bs
   n_chars <- countUTF8Chars ptr len
-  return (FastString uid n_chars bs ref)
+  return (FastString uid n_chars bs zstr)
 
-copyNewFastString :: Ptr Word8 -> Int -> Int -> IO FastString
-copyNewFastString ptr len uid = do
+copyNewFastString :: Ptr Word8 -> Int -> Int -> IORef Int -> IO FastString
+copyNewFastString ptr len uid n_zencs = do
   fp <- copyBytesToForeignPtr ptr len
-  ref <- newIORef Nothing
+  let bs = BS.fromForeignPtr fp 0 len
+      zstr = mkZFastString n_zencs bs
   n_chars <- countUTF8Chars ptr len
-  return (FastString uid n_chars (BS.fromForeignPtr fp 0 len) ref)
+  return (FastString uid n_chars bs zstr)
 
 copyBytesToForeignPtr :: Ptr Word8 -> Int -> IO (ForeignPtr Word8)
 copyBytesToForeignPtr ptr len = do
@@ -536,14 +546,6 @@
 lengthFS :: FastString -> Int
 lengthFS f = n_chars f
 
--- | Returns @True@ if this 'FastString' is not Z-encoded but already has
--- a Z-encoding cached (used in producing stats).
-hasZEncoding :: FastString -> Bool
-hasZEncoding (FastString _ _ _ ref) =
-      inlinePerformIO $ do
-        m <- readIORef ref
-        return (isJust m)
-
 -- | Returns @True@ if the 'FastString' is empty
 nullFS :: FastString -> Bool
 nullFS f = BS.null (fs_bs f)
@@ -558,16 +560,7 @@
 -- memoized.
 --
 zEncodeFS :: FastString -> FastZString
-zEncodeFS fs@(FastString _ _ _ ref) =
-      inlinePerformIO $ do
-        m <- readIORef ref
-        case m of
-          Just zfs -> return zfs
-          Nothing -> do
-            atomicModifyIORef' ref $ \m' -> case m' of
-              Nothing  -> let zfs = mkZFastString (zEncodeString (unpackFS fs))
-                          in (Just zfs, zfs)
-              Just zfs -> (m', zfs)
+zEncodeFS (FastString _ _ _ ref) = ref
 
 appendFS :: FastString -> FastString -> FastString
 appendFS fs1 fs2 = mkFastStringByteString
@@ -613,7 +606,12 @@
     forM [0 .. bucketSize - 1] $ \(I# j#) ->
       IO $ readArray# buckets# j#
   where
-    !(FastStringTable _ segments#) = stringTable
+    !(FastStringTable _ _ segments#) = stringTable
+
+getFastStringZEncCounter :: IO Int
+getFastStringZEncCounter = readIORef n_zencs
+  where
+    !(FastStringTable _ n_zencs _) = stringTable
 
 -- -----------------------------------------------------------------------------
 -- Outputting 'FastString's
diff --git a/ghc-lib-parser.cabal b/ghc-lib-parser.cabal
--- a/ghc-lib-parser.cabal
+++ b/ghc-lib-parser.cabal
@@ -1,7 +1,7 @@
 cabal-version: >=1.22
 build-type: Simple
 name: ghc-lib-parser
-version: 0.20190903
+version: 0.20190909
 license: BSD3
 license-file: LICENSE
 category: Development
@@ -52,7 +52,7 @@
     compiler/nativeGen/*.h
     compiler/utils/*.h
     compiler/*.h
-tested-with: GHC==8.6.3, GHC==8.4.3
+tested-with: GHC==8.8.1, GHC==8.6.5, GHC==8.4.3
 source-repository head
     type: git
     location: git@github.com:digital-asset/ghc-lib.git
diff --git a/ghc-lib/generated/GHCConstantsHaskellType.hs b/ghc-lib/generated/GHCConstantsHaskellType.hs
--- a/ghc-lib/generated/GHCConstantsHaskellType.hs
+++ b/ghc-lib/generated/GHCConstantsHaskellType.hs
@@ -1,134 +1,133 @@
 data PlatformConstants = PlatformConstants {
-    pc_platformConstants :: ()
-    , pc_CONTROL_GROUP_CONST_291 :: Int
-    , pc_STD_HDR_SIZE :: Int
-    , pc_PROF_HDR_SIZE :: Int
-    , pc_BLOCK_SIZE :: Int
-    , pc_BLOCKS_PER_MBLOCK :: Int
-    , pc_TICKY_BIN_COUNT :: Int
-    , pc_OFFSET_StgRegTable_rR1 :: Int
-    , pc_OFFSET_StgRegTable_rR2 :: Int
-    , pc_OFFSET_StgRegTable_rR3 :: Int
-    , pc_OFFSET_StgRegTable_rR4 :: Int
-    , pc_OFFSET_StgRegTable_rR5 :: Int
-    , pc_OFFSET_StgRegTable_rR6 :: Int
-    , pc_OFFSET_StgRegTable_rR7 :: Int
-    , pc_OFFSET_StgRegTable_rR8 :: Int
-    , pc_OFFSET_StgRegTable_rR9 :: Int
-    , pc_OFFSET_StgRegTable_rR10 :: Int
-    , pc_OFFSET_StgRegTable_rF1 :: Int
-    , pc_OFFSET_StgRegTable_rF2 :: Int
-    , pc_OFFSET_StgRegTable_rF3 :: Int
-    , pc_OFFSET_StgRegTable_rF4 :: Int
-    , pc_OFFSET_StgRegTable_rF5 :: Int
-    , pc_OFFSET_StgRegTable_rF6 :: Int
-    , pc_OFFSET_StgRegTable_rD1 :: Int
-    , pc_OFFSET_StgRegTable_rD2 :: Int
-    , pc_OFFSET_StgRegTable_rD3 :: Int
-    , pc_OFFSET_StgRegTable_rD4 :: Int
-    , pc_OFFSET_StgRegTable_rD5 :: Int
-    , pc_OFFSET_StgRegTable_rD6 :: Int
-    , pc_OFFSET_StgRegTable_rXMM1 :: Int
-    , pc_OFFSET_StgRegTable_rXMM2 :: Int
-    , pc_OFFSET_StgRegTable_rXMM3 :: Int
-    , pc_OFFSET_StgRegTable_rXMM4 :: Int
-    , pc_OFFSET_StgRegTable_rXMM5 :: Int
-    , pc_OFFSET_StgRegTable_rXMM6 :: Int
-    , pc_OFFSET_StgRegTable_rYMM1 :: Int
-    , pc_OFFSET_StgRegTable_rYMM2 :: Int
-    , pc_OFFSET_StgRegTable_rYMM3 :: Int
-    , pc_OFFSET_StgRegTable_rYMM4 :: Int
-    , pc_OFFSET_StgRegTable_rYMM5 :: Int
-    , pc_OFFSET_StgRegTable_rYMM6 :: Int
-    , pc_OFFSET_StgRegTable_rZMM1 :: Int
-    , pc_OFFSET_StgRegTable_rZMM2 :: Int
-    , pc_OFFSET_StgRegTable_rZMM3 :: Int
-    , pc_OFFSET_StgRegTable_rZMM4 :: Int
-    , pc_OFFSET_StgRegTable_rZMM5 :: Int
-    , pc_OFFSET_StgRegTable_rZMM6 :: Int
-    , pc_OFFSET_StgRegTable_rL1 :: Int
-    , pc_OFFSET_StgRegTable_rSp :: Int
-    , pc_OFFSET_StgRegTable_rSpLim :: Int
-    , pc_OFFSET_StgRegTable_rHp :: Int
-    , pc_OFFSET_StgRegTable_rHpLim :: Int
-    , pc_OFFSET_StgRegTable_rCCCS :: Int
-    , pc_OFFSET_StgRegTable_rCurrentTSO :: Int
-    , pc_OFFSET_StgRegTable_rCurrentNursery :: Int
-    , pc_OFFSET_StgRegTable_rHpAlloc :: Int
-    , pc_OFFSET_stgEagerBlackholeInfo :: Int
-    , pc_OFFSET_stgGCEnter1 :: Int
-    , pc_OFFSET_stgGCFun :: Int
-    , pc_OFFSET_Capability_r :: Int
-    , pc_OFFSET_bdescr_start :: Int
-    , pc_OFFSET_bdescr_free :: Int
-    , pc_OFFSET_bdescr_blocks :: Int
-    , pc_OFFSET_bdescr_flags :: Int
-    , pc_SIZEOF_CostCentreStack :: Int
-    , pc_OFFSET_CostCentreStack_mem_alloc :: Int
-    , pc_REP_CostCentreStack_mem_alloc :: Int
-    , pc_OFFSET_CostCentreStack_scc_count :: Int
-    , pc_REP_CostCentreStack_scc_count :: Int
-    , pc_OFFSET_StgHeader_ccs :: Int
-    , pc_OFFSET_StgHeader_ldvw :: Int
-    , pc_SIZEOF_StgSMPThunkHeader :: Int
-    , pc_OFFSET_StgEntCounter_allocs :: Int
-    , pc_REP_StgEntCounter_allocs :: Int
-    , pc_OFFSET_StgEntCounter_allocd :: Int
-    , pc_REP_StgEntCounter_allocd :: Int
-    , pc_OFFSET_StgEntCounter_registeredp :: Int
-    , pc_OFFSET_StgEntCounter_link :: Int
-    , pc_OFFSET_StgEntCounter_entry_count :: Int
-    , pc_SIZEOF_StgUpdateFrame_NoHdr :: Int
-    , pc_SIZEOF_StgMutArrPtrs_NoHdr :: Int
-    , pc_OFFSET_StgMutArrPtrs_ptrs :: Int
-    , pc_OFFSET_StgMutArrPtrs_size :: Int
-    , pc_SIZEOF_StgSmallMutArrPtrs_NoHdr :: Int
-    , pc_OFFSET_StgSmallMutArrPtrs_ptrs :: Int
-    , pc_SIZEOF_StgArrBytes_NoHdr :: Int
-    , pc_OFFSET_StgArrBytes_bytes :: Int
-    , pc_OFFSET_StgTSO_alloc_limit :: Int
-    , pc_OFFSET_StgTSO_cccs :: Int
-    , pc_OFFSET_StgTSO_stackobj :: Int
-    , pc_OFFSET_StgStack_sp :: Int
-    , pc_OFFSET_StgStack_stack :: Int
-    , pc_OFFSET_StgUpdateFrame_updatee :: Int
-    , pc_OFFSET_StgFunInfoExtraFwd_arity :: Int
-    , pc_REP_StgFunInfoExtraFwd_arity :: Int
-    , pc_SIZEOF_StgFunInfoExtraRev :: Int
-    , pc_OFFSET_StgFunInfoExtraRev_arity :: Int
-    , pc_REP_StgFunInfoExtraRev_arity :: Int
-    , pc_MAX_SPEC_SELECTEE_SIZE :: Int
-    , pc_MAX_SPEC_AP_SIZE :: Int
-    , pc_MIN_PAYLOAD_SIZE :: Int
-    , pc_MIN_INTLIKE :: Int
-    , pc_MAX_INTLIKE :: Int
-    , pc_MIN_CHARLIKE :: Int
-    , pc_MAX_CHARLIKE :: Int
-    , pc_MUT_ARR_PTRS_CARD_BITS :: Int
-    , pc_MAX_Vanilla_REG :: Int
-    , pc_MAX_Float_REG :: Int
-    , pc_MAX_Double_REG :: Int
-    , pc_MAX_Long_REG :: Int
-    , pc_MAX_XMM_REG :: Int
-    , pc_MAX_Real_Vanilla_REG :: Int
-    , pc_MAX_Real_Float_REG :: Int
-    , pc_MAX_Real_Double_REG :: Int
-    , pc_MAX_Real_XMM_REG :: Int
-    , pc_MAX_Real_Long_REG :: Int
-    , pc_RESERVED_C_STACK_BYTES :: Int
-    , pc_RESERVED_STACK_WORDS :: Int
-    , pc_AP_STACK_SPLIM :: Int
-    , pc_WORD_SIZE :: Int
-    , pc_DOUBLE_SIZE :: Int
-    , pc_CINT_SIZE :: Int
-    , pc_CLONG_SIZE :: Int
-    , pc_CLONG_LONG_SIZE :: Int
-    , pc_BITMAP_BITS_SHIFT :: Int
-    , pc_TAG_BITS :: Int
-    , pc_WORDS_BIGENDIAN :: Bool
-    , pc_DYNAMIC_BY_DEFAULT :: Bool
-    , pc_LDV_SHIFT :: Int
-    , pc_ILDV_CREATE_MASK :: Integer
-    , pc_ILDV_STATE_CREATE :: Integer
-    , pc_ILDV_STATE_USE :: Integer
+      pc_CONTROL_GROUP_CONST_291 :: Int,
+      pc_STD_HDR_SIZE :: Int,
+      pc_PROF_HDR_SIZE :: Int,
+      pc_BLOCK_SIZE :: Int,
+      pc_BLOCKS_PER_MBLOCK :: Int,
+      pc_TICKY_BIN_COUNT :: Int,
+      pc_OFFSET_StgRegTable_rR1 :: Int,
+      pc_OFFSET_StgRegTable_rR2 :: Int,
+      pc_OFFSET_StgRegTable_rR3 :: Int,
+      pc_OFFSET_StgRegTable_rR4 :: Int,
+      pc_OFFSET_StgRegTable_rR5 :: Int,
+      pc_OFFSET_StgRegTable_rR6 :: Int,
+      pc_OFFSET_StgRegTable_rR7 :: Int,
+      pc_OFFSET_StgRegTable_rR8 :: Int,
+      pc_OFFSET_StgRegTable_rR9 :: Int,
+      pc_OFFSET_StgRegTable_rR10 :: Int,
+      pc_OFFSET_StgRegTable_rF1 :: Int,
+      pc_OFFSET_StgRegTable_rF2 :: Int,
+      pc_OFFSET_StgRegTable_rF3 :: Int,
+      pc_OFFSET_StgRegTable_rF4 :: Int,
+      pc_OFFSET_StgRegTable_rF5 :: Int,
+      pc_OFFSET_StgRegTable_rF6 :: Int,
+      pc_OFFSET_StgRegTable_rD1 :: Int,
+      pc_OFFSET_StgRegTable_rD2 :: Int,
+      pc_OFFSET_StgRegTable_rD3 :: Int,
+      pc_OFFSET_StgRegTable_rD4 :: Int,
+      pc_OFFSET_StgRegTable_rD5 :: Int,
+      pc_OFFSET_StgRegTable_rD6 :: Int,
+      pc_OFFSET_StgRegTable_rXMM1 :: Int,
+      pc_OFFSET_StgRegTable_rXMM2 :: Int,
+      pc_OFFSET_StgRegTable_rXMM3 :: Int,
+      pc_OFFSET_StgRegTable_rXMM4 :: Int,
+      pc_OFFSET_StgRegTable_rXMM5 :: Int,
+      pc_OFFSET_StgRegTable_rXMM6 :: Int,
+      pc_OFFSET_StgRegTable_rYMM1 :: Int,
+      pc_OFFSET_StgRegTable_rYMM2 :: Int,
+      pc_OFFSET_StgRegTable_rYMM3 :: Int,
+      pc_OFFSET_StgRegTable_rYMM4 :: Int,
+      pc_OFFSET_StgRegTable_rYMM5 :: Int,
+      pc_OFFSET_StgRegTable_rYMM6 :: Int,
+      pc_OFFSET_StgRegTable_rZMM1 :: Int,
+      pc_OFFSET_StgRegTable_rZMM2 :: Int,
+      pc_OFFSET_StgRegTable_rZMM3 :: Int,
+      pc_OFFSET_StgRegTable_rZMM4 :: Int,
+      pc_OFFSET_StgRegTable_rZMM5 :: Int,
+      pc_OFFSET_StgRegTable_rZMM6 :: Int,
+      pc_OFFSET_StgRegTable_rL1 :: Int,
+      pc_OFFSET_StgRegTable_rSp :: Int,
+      pc_OFFSET_StgRegTable_rSpLim :: Int,
+      pc_OFFSET_StgRegTable_rHp :: Int,
+      pc_OFFSET_StgRegTable_rHpLim :: Int,
+      pc_OFFSET_StgRegTable_rCCCS :: Int,
+      pc_OFFSET_StgRegTable_rCurrentTSO :: Int,
+      pc_OFFSET_StgRegTable_rCurrentNursery :: Int,
+      pc_OFFSET_StgRegTable_rHpAlloc :: Int,
+      pc_OFFSET_stgEagerBlackholeInfo :: Int,
+      pc_OFFSET_stgGCEnter1 :: Int,
+      pc_OFFSET_stgGCFun :: Int,
+      pc_OFFSET_Capability_r :: Int,
+      pc_OFFSET_bdescr_start :: Int,
+      pc_OFFSET_bdescr_free :: Int,
+      pc_OFFSET_bdescr_blocks :: Int,
+      pc_OFFSET_bdescr_flags :: Int,
+      pc_SIZEOF_CostCentreStack :: Int,
+      pc_OFFSET_CostCentreStack_mem_alloc :: Int,
+      pc_REP_CostCentreStack_mem_alloc :: Int,
+      pc_OFFSET_CostCentreStack_scc_count :: Int,
+      pc_REP_CostCentreStack_scc_count :: Int,
+      pc_OFFSET_StgHeader_ccs :: Int,
+      pc_OFFSET_StgHeader_ldvw :: Int,
+      pc_SIZEOF_StgSMPThunkHeader :: Int,
+      pc_OFFSET_StgEntCounter_allocs :: Int,
+      pc_REP_StgEntCounter_allocs :: Int,
+      pc_OFFSET_StgEntCounter_allocd :: Int,
+      pc_REP_StgEntCounter_allocd :: Int,
+      pc_OFFSET_StgEntCounter_registeredp :: Int,
+      pc_OFFSET_StgEntCounter_link :: Int,
+      pc_OFFSET_StgEntCounter_entry_count :: Int,
+      pc_SIZEOF_StgUpdateFrame_NoHdr :: Int,
+      pc_SIZEOF_StgMutArrPtrs_NoHdr :: Int,
+      pc_OFFSET_StgMutArrPtrs_ptrs :: Int,
+      pc_OFFSET_StgMutArrPtrs_size :: Int,
+      pc_SIZEOF_StgSmallMutArrPtrs_NoHdr :: Int,
+      pc_OFFSET_StgSmallMutArrPtrs_ptrs :: Int,
+      pc_SIZEOF_StgArrBytes_NoHdr :: Int,
+      pc_OFFSET_StgArrBytes_bytes :: Int,
+      pc_OFFSET_StgTSO_alloc_limit :: Int,
+      pc_OFFSET_StgTSO_cccs :: Int,
+      pc_OFFSET_StgTSO_stackobj :: Int,
+      pc_OFFSET_StgStack_sp :: Int,
+      pc_OFFSET_StgStack_stack :: Int,
+      pc_OFFSET_StgUpdateFrame_updatee :: Int,
+      pc_OFFSET_StgFunInfoExtraFwd_arity :: Int,
+      pc_REP_StgFunInfoExtraFwd_arity :: Int,
+      pc_SIZEOF_StgFunInfoExtraRev :: Int,
+      pc_OFFSET_StgFunInfoExtraRev_arity :: Int,
+      pc_REP_StgFunInfoExtraRev_arity :: Int,
+      pc_MAX_SPEC_SELECTEE_SIZE :: Int,
+      pc_MAX_SPEC_AP_SIZE :: Int,
+      pc_MIN_PAYLOAD_SIZE :: Int,
+      pc_MIN_INTLIKE :: Int,
+      pc_MAX_INTLIKE :: Int,
+      pc_MIN_CHARLIKE :: Int,
+      pc_MAX_CHARLIKE :: Int,
+      pc_MUT_ARR_PTRS_CARD_BITS :: Int,
+      pc_MAX_Vanilla_REG :: Int,
+      pc_MAX_Float_REG :: Int,
+      pc_MAX_Double_REG :: Int,
+      pc_MAX_Long_REG :: Int,
+      pc_MAX_XMM_REG :: Int,
+      pc_MAX_Real_Vanilla_REG :: Int,
+      pc_MAX_Real_Float_REG :: Int,
+      pc_MAX_Real_Double_REG :: Int,
+      pc_MAX_Real_XMM_REG :: Int,
+      pc_MAX_Real_Long_REG :: Int,
+      pc_RESERVED_C_STACK_BYTES :: Int,
+      pc_RESERVED_STACK_WORDS :: Int,
+      pc_AP_STACK_SPLIM :: Int,
+      pc_WORD_SIZE :: Int,
+      pc_DOUBLE_SIZE :: Int,
+      pc_CINT_SIZE :: Int,
+      pc_CLONG_SIZE :: Int,
+      pc_CLONG_LONG_SIZE :: Int,
+      pc_BITMAP_BITS_SHIFT :: Int,
+      pc_TAG_BITS :: Int,
+      pc_WORDS_BIGENDIAN :: Bool,
+      pc_DYNAMIC_BY_DEFAULT :: Bool,
+      pc_LDV_SHIFT :: Int,
+      pc_ILDV_CREATE_MASK :: Integer,
+      pc_ILDV_STATE_CREATE :: Integer,
+      pc_ILDV_STATE_USE :: Integer
   } deriving Read
diff --git a/ghc-lib/generated/ghcversion.h b/ghc-lib/generated/ghcversion.h
--- a/ghc-lib/generated/ghcversion.h
+++ b/ghc-lib/generated/ghcversion.h
@@ -6,7 +6,7 @@
 #endif
 
 #define __GLASGOW_HASKELL_PATCHLEVEL1__ 0
-#define __GLASGOW_HASKELL_PATCHLEVEL2__ 20190902
+#define __GLASGOW_HASKELL_PATCHLEVEL2__ 20190909
 
 #define MIN_VERSION_GLASGOW_HASKELL(ma,mi,pl1,pl2) (\
    ((ma)*100+(mi)) <  __GLASGOW_HASKELL__ || \
diff --git a/ghc-lib/stage0/compiler/build/Parser.hs b/ghc-lib/stage0/compiler/build/Parser.hs
--- a/ghc-lib/stage0/compiler/build/Parser.hs
+++ b/ghc-lib/stage0/compiler/build/Parser.hs
@@ -12744,7 +12744,319 @@
 
 
 {-# LINE 19 "<built-in>" #-}
-{-# LINE 1 "/var/folders/kc/bjk2hzwx6bv07jz_s80wjh7w0000gn/T/ghc22993_0/ghc_2.h" #-}
+{-# LINE 1 "/var/folders/f_/bb4zyb7d2_z9bqm3hrqrjgp40000gn/T/ghc14252_0/ghc_2.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
diff --git a/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs b/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
--- a/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
+++ b/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
@@ -3,19 +3,19 @@
 import Prelude -- See Note [Why do we import Prelude here?]
 
 cProjectGitCommitId   :: String
-cProjectGitCommitId   = "11679e5bec1994775072e8e60f24b4ce104af0a7"
+cProjectGitCommitId   = "270fbe8512f04b6107755fa22bdec62205c0a567"
 
 cProjectVersion       :: String
-cProjectVersion       = "8.9.0.20190902"
+cProjectVersion       = "8.9.0.20190909"
 
 cProjectVersionInt    :: String
 cProjectVersionInt    = "809"
 
 cProjectPatchLevel    :: String
-cProjectPatchLevel    = "020190902"
+cProjectPatchLevel    = "020190909"
 
 cProjectPatchLevel1   :: String
 cProjectPatchLevel1   = "0"
 
 cProjectPatchLevel2   :: String
-cProjectPatchLevel2   = "20190902"
+cProjectPatchLevel2   = "20190909"
diff --git a/ghc-lib/stage1/lib/platformConstants b/ghc-lib/stage1/lib/platformConstants
--- a/ghc-lib/stage1/lib/platformConstants
+++ b/ghc-lib/stage1/lib/platformConstants
@@ -1,134 +1,133 @@
 PlatformConstants {
-    pc_platformConstants = ()
-    , pc_CONTROL_GROUP_CONST_291 = 291
-    , pc_STD_HDR_SIZE = 1
-    , pc_PROF_HDR_SIZE = 2
-    , pc_BLOCK_SIZE = 4096
-    , pc_BLOCKS_PER_MBLOCK = 252
-    , pc_TICKY_BIN_COUNT = 9
-    , pc_OFFSET_StgRegTable_rR1 = 0
-    , pc_OFFSET_StgRegTable_rR2 = 8
-    , pc_OFFSET_StgRegTable_rR3 = 16
-    , pc_OFFSET_StgRegTable_rR4 = 24
-    , pc_OFFSET_StgRegTable_rR5 = 32
-    , pc_OFFSET_StgRegTable_rR6 = 40
-    , pc_OFFSET_StgRegTable_rR7 = 48
-    , pc_OFFSET_StgRegTable_rR8 = 56
-    , pc_OFFSET_StgRegTable_rR9 = 64
-    , pc_OFFSET_StgRegTable_rR10 = 72
-    , pc_OFFSET_StgRegTable_rF1 = 80
-    , pc_OFFSET_StgRegTable_rF2 = 84
-    , pc_OFFSET_StgRegTable_rF3 = 88
-    , pc_OFFSET_StgRegTable_rF4 = 92
-    , pc_OFFSET_StgRegTable_rF5 = 96
-    , pc_OFFSET_StgRegTable_rF6 = 100
-    , pc_OFFSET_StgRegTable_rD1 = 104
-    , pc_OFFSET_StgRegTable_rD2 = 112
-    , pc_OFFSET_StgRegTable_rD3 = 120
-    , pc_OFFSET_StgRegTable_rD4 = 128
-    , pc_OFFSET_StgRegTable_rD5 = 136
-    , pc_OFFSET_StgRegTable_rD6 = 144
-    , pc_OFFSET_StgRegTable_rXMM1 = 152
-    , pc_OFFSET_StgRegTable_rXMM2 = 168
-    , pc_OFFSET_StgRegTable_rXMM3 = 184
-    , pc_OFFSET_StgRegTable_rXMM4 = 200
-    , pc_OFFSET_StgRegTable_rXMM5 = 216
-    , pc_OFFSET_StgRegTable_rXMM6 = 232
-    , pc_OFFSET_StgRegTable_rYMM1 = 248
-    , pc_OFFSET_StgRegTable_rYMM2 = 280
-    , pc_OFFSET_StgRegTable_rYMM3 = 312
-    , pc_OFFSET_StgRegTable_rYMM4 = 344
-    , pc_OFFSET_StgRegTable_rYMM5 = 376
-    , pc_OFFSET_StgRegTable_rYMM6 = 408
-    , pc_OFFSET_StgRegTable_rZMM1 = 440
-    , pc_OFFSET_StgRegTable_rZMM2 = 504
-    , pc_OFFSET_StgRegTable_rZMM3 = 568
-    , pc_OFFSET_StgRegTable_rZMM4 = 632
-    , pc_OFFSET_StgRegTable_rZMM5 = 696
-    , pc_OFFSET_StgRegTable_rZMM6 = 760
-    , pc_OFFSET_StgRegTable_rL1 = 824
-    , pc_OFFSET_StgRegTable_rSp = 832
-    , pc_OFFSET_StgRegTable_rSpLim = 840
-    , pc_OFFSET_StgRegTable_rHp = 848
-    , pc_OFFSET_StgRegTable_rHpLim = 856
-    , pc_OFFSET_StgRegTable_rCCCS = 864
-    , pc_OFFSET_StgRegTable_rCurrentTSO = 872
-    , pc_OFFSET_StgRegTable_rCurrentNursery = 888
-    , pc_OFFSET_StgRegTable_rHpAlloc = 904
-    , pc_OFFSET_stgEagerBlackholeInfo = -24
-    , pc_OFFSET_stgGCEnter1 = -16
-    , pc_OFFSET_stgGCFun = -8
-    , pc_OFFSET_Capability_r = 24
-    , pc_OFFSET_bdescr_start = 0
-    , pc_OFFSET_bdescr_free = 8
-    , pc_OFFSET_bdescr_blocks = 48
-    , pc_OFFSET_bdescr_flags = 46
-    , pc_SIZEOF_CostCentreStack = 96
-    , pc_OFFSET_CostCentreStack_mem_alloc = 72
-    , pc_REP_CostCentreStack_mem_alloc = 8
-    , pc_OFFSET_CostCentreStack_scc_count = 48
-    , pc_REP_CostCentreStack_scc_count = 8
-    , pc_OFFSET_StgHeader_ccs = 8
-    , pc_OFFSET_StgHeader_ldvw = 16
-    , pc_SIZEOF_StgSMPThunkHeader = 8
-    , pc_OFFSET_StgEntCounter_allocs = 48
-    , pc_REP_StgEntCounter_allocs = 8
-    , pc_OFFSET_StgEntCounter_allocd = 16
-    , pc_REP_StgEntCounter_allocd = 8
-    , pc_OFFSET_StgEntCounter_registeredp = 0
-    , pc_OFFSET_StgEntCounter_link = 56
-    , pc_OFFSET_StgEntCounter_entry_count = 40
-    , pc_SIZEOF_StgUpdateFrame_NoHdr = 8
-    , pc_SIZEOF_StgMutArrPtrs_NoHdr = 16
-    , pc_OFFSET_StgMutArrPtrs_ptrs = 0
-    , pc_OFFSET_StgMutArrPtrs_size = 8
-    , pc_SIZEOF_StgSmallMutArrPtrs_NoHdr = 8
-    , pc_OFFSET_StgSmallMutArrPtrs_ptrs = 0
-    , pc_SIZEOF_StgArrBytes_NoHdr = 8
-    , pc_OFFSET_StgArrBytes_bytes = 0
-    , pc_OFFSET_StgTSO_alloc_limit = 96
-    , pc_OFFSET_StgTSO_cccs = 112
-    , pc_OFFSET_StgTSO_stackobj = 16
-    , pc_OFFSET_StgStack_sp = 8
-    , pc_OFFSET_StgStack_stack = 16
-    , pc_OFFSET_StgUpdateFrame_updatee = 0
-    , pc_OFFSET_StgFunInfoExtraFwd_arity = 4
-    , pc_REP_StgFunInfoExtraFwd_arity = 4
-    , pc_SIZEOF_StgFunInfoExtraRev = 24
-    , pc_OFFSET_StgFunInfoExtraRev_arity = 20
-    , pc_REP_StgFunInfoExtraRev_arity = 4
-    , pc_MAX_SPEC_SELECTEE_SIZE = 15
-    , pc_MAX_SPEC_AP_SIZE = 7
-    , pc_MIN_PAYLOAD_SIZE = 1
-    , pc_MIN_INTLIKE = -16
-    , pc_MAX_INTLIKE = 255
-    , pc_MIN_CHARLIKE = 0
-    , pc_MAX_CHARLIKE = 255
-    , pc_MUT_ARR_PTRS_CARD_BITS = 7
-    , pc_MAX_Vanilla_REG = 10
-    , pc_MAX_Float_REG = 6
-    , pc_MAX_Double_REG = 6
-    , pc_MAX_Long_REG = 1
-    , pc_MAX_XMM_REG = 6
-    , pc_MAX_Real_Vanilla_REG = 6
-    , pc_MAX_Real_Float_REG = 6
-    , pc_MAX_Real_Double_REG = 6
-    , pc_MAX_Real_XMM_REG = 6
-    , pc_MAX_Real_Long_REG = 0
-    , pc_RESERVED_C_STACK_BYTES = 16384
-    , pc_RESERVED_STACK_WORDS = 21
-    , pc_AP_STACK_SPLIM = 1024
-    , pc_WORD_SIZE = 8
-    , pc_DOUBLE_SIZE = 8
-    , pc_CINT_SIZE = 4
-    , pc_CLONG_SIZE = 8
-    , pc_CLONG_LONG_SIZE = 8
-    , pc_BITMAP_BITS_SHIFT = 6
-    , pc_TAG_BITS = 3
-    , pc_WORDS_BIGENDIAN = False
-    , pc_DYNAMIC_BY_DEFAULT = False
-    , pc_LDV_SHIFT = 30
-    , pc_ILDV_CREATE_MASK = 1152921503533105152
-    , pc_ILDV_STATE_CREATE = 0
-    , pc_ILDV_STATE_USE = 1152921504606846976
+      pc_CONTROL_GROUP_CONST_291 = 291,
+      pc_STD_HDR_SIZE = 1,
+      pc_PROF_HDR_SIZE = 2,
+      pc_BLOCK_SIZE = 4096,
+      pc_BLOCKS_PER_MBLOCK = 252,
+      pc_TICKY_BIN_COUNT = 9,
+      pc_OFFSET_StgRegTable_rR1 = 0,
+      pc_OFFSET_StgRegTable_rR2 = 8,
+      pc_OFFSET_StgRegTable_rR3 = 16,
+      pc_OFFSET_StgRegTable_rR4 = 24,
+      pc_OFFSET_StgRegTable_rR5 = 32,
+      pc_OFFSET_StgRegTable_rR6 = 40,
+      pc_OFFSET_StgRegTable_rR7 = 48,
+      pc_OFFSET_StgRegTable_rR8 = 56,
+      pc_OFFSET_StgRegTable_rR9 = 64,
+      pc_OFFSET_StgRegTable_rR10 = 72,
+      pc_OFFSET_StgRegTable_rF1 = 80,
+      pc_OFFSET_StgRegTable_rF2 = 84,
+      pc_OFFSET_StgRegTable_rF3 = 88,
+      pc_OFFSET_StgRegTable_rF4 = 92,
+      pc_OFFSET_StgRegTable_rF5 = 96,
+      pc_OFFSET_StgRegTable_rF6 = 100,
+      pc_OFFSET_StgRegTable_rD1 = 104,
+      pc_OFFSET_StgRegTable_rD2 = 112,
+      pc_OFFSET_StgRegTable_rD3 = 120,
+      pc_OFFSET_StgRegTable_rD4 = 128,
+      pc_OFFSET_StgRegTable_rD5 = 136,
+      pc_OFFSET_StgRegTable_rD6 = 144,
+      pc_OFFSET_StgRegTable_rXMM1 = 152,
+      pc_OFFSET_StgRegTable_rXMM2 = 168,
+      pc_OFFSET_StgRegTable_rXMM3 = 184,
+      pc_OFFSET_StgRegTable_rXMM4 = 200,
+      pc_OFFSET_StgRegTable_rXMM5 = 216,
+      pc_OFFSET_StgRegTable_rXMM6 = 232,
+      pc_OFFSET_StgRegTable_rYMM1 = 248,
+      pc_OFFSET_StgRegTable_rYMM2 = 280,
+      pc_OFFSET_StgRegTable_rYMM3 = 312,
+      pc_OFFSET_StgRegTable_rYMM4 = 344,
+      pc_OFFSET_StgRegTable_rYMM5 = 376,
+      pc_OFFSET_StgRegTable_rYMM6 = 408,
+      pc_OFFSET_StgRegTable_rZMM1 = 440,
+      pc_OFFSET_StgRegTable_rZMM2 = 504,
+      pc_OFFSET_StgRegTable_rZMM3 = 568,
+      pc_OFFSET_StgRegTable_rZMM4 = 632,
+      pc_OFFSET_StgRegTable_rZMM5 = 696,
+      pc_OFFSET_StgRegTable_rZMM6 = 760,
+      pc_OFFSET_StgRegTable_rL1 = 824,
+      pc_OFFSET_StgRegTable_rSp = 832,
+      pc_OFFSET_StgRegTable_rSpLim = 840,
+      pc_OFFSET_StgRegTable_rHp = 848,
+      pc_OFFSET_StgRegTable_rHpLim = 856,
+      pc_OFFSET_StgRegTable_rCCCS = 864,
+      pc_OFFSET_StgRegTable_rCurrentTSO = 872,
+      pc_OFFSET_StgRegTable_rCurrentNursery = 888,
+      pc_OFFSET_StgRegTable_rHpAlloc = 904,
+      pc_OFFSET_stgEagerBlackholeInfo = -24,
+      pc_OFFSET_stgGCEnter1 = -16,
+      pc_OFFSET_stgGCFun = -8,
+      pc_OFFSET_Capability_r = 24,
+      pc_OFFSET_bdescr_start = 0,
+      pc_OFFSET_bdescr_free = 8,
+      pc_OFFSET_bdescr_blocks = 48,
+      pc_OFFSET_bdescr_flags = 46,
+      pc_SIZEOF_CostCentreStack = 96,
+      pc_OFFSET_CostCentreStack_mem_alloc = 72,
+      pc_REP_CostCentreStack_mem_alloc = 8,
+      pc_OFFSET_CostCentreStack_scc_count = 48,
+      pc_REP_CostCentreStack_scc_count = 8,
+      pc_OFFSET_StgHeader_ccs = 8,
+      pc_OFFSET_StgHeader_ldvw = 16,
+      pc_SIZEOF_StgSMPThunkHeader = 8,
+      pc_OFFSET_StgEntCounter_allocs = 48,
+      pc_REP_StgEntCounter_allocs = 8,
+      pc_OFFSET_StgEntCounter_allocd = 16,
+      pc_REP_StgEntCounter_allocd = 8,
+      pc_OFFSET_StgEntCounter_registeredp = 0,
+      pc_OFFSET_StgEntCounter_link = 56,
+      pc_OFFSET_StgEntCounter_entry_count = 40,
+      pc_SIZEOF_StgUpdateFrame_NoHdr = 8,
+      pc_SIZEOF_StgMutArrPtrs_NoHdr = 16,
+      pc_OFFSET_StgMutArrPtrs_ptrs = 0,
+      pc_OFFSET_StgMutArrPtrs_size = 8,
+      pc_SIZEOF_StgSmallMutArrPtrs_NoHdr = 8,
+      pc_OFFSET_StgSmallMutArrPtrs_ptrs = 0,
+      pc_SIZEOF_StgArrBytes_NoHdr = 8,
+      pc_OFFSET_StgArrBytes_bytes = 0,
+      pc_OFFSET_StgTSO_alloc_limit = 96,
+      pc_OFFSET_StgTSO_cccs = 112,
+      pc_OFFSET_StgTSO_stackobj = 16,
+      pc_OFFSET_StgStack_sp = 8,
+      pc_OFFSET_StgStack_stack = 16,
+      pc_OFFSET_StgUpdateFrame_updatee = 0,
+      pc_OFFSET_StgFunInfoExtraFwd_arity = 4,
+      pc_REP_StgFunInfoExtraFwd_arity = 4,
+      pc_SIZEOF_StgFunInfoExtraRev = 24,
+      pc_OFFSET_StgFunInfoExtraRev_arity = 20,
+      pc_REP_StgFunInfoExtraRev_arity = 4,
+      pc_MAX_SPEC_SELECTEE_SIZE = 15,
+      pc_MAX_SPEC_AP_SIZE = 7,
+      pc_MIN_PAYLOAD_SIZE = 1,
+      pc_MIN_INTLIKE = -16,
+      pc_MAX_INTLIKE = 255,
+      pc_MIN_CHARLIKE = 0,
+      pc_MAX_CHARLIKE = 255,
+      pc_MUT_ARR_PTRS_CARD_BITS = 7,
+      pc_MAX_Vanilla_REG = 10,
+      pc_MAX_Float_REG = 6,
+      pc_MAX_Double_REG = 6,
+      pc_MAX_Long_REG = 1,
+      pc_MAX_XMM_REG = 6,
+      pc_MAX_Real_Vanilla_REG = 6,
+      pc_MAX_Real_Float_REG = 6,
+      pc_MAX_Real_Double_REG = 6,
+      pc_MAX_Real_XMM_REG = 6,
+      pc_MAX_Real_Long_REG = 0,
+      pc_RESERVED_C_STACK_BYTES = 16384,
+      pc_RESERVED_STACK_WORDS = 21,
+      pc_AP_STACK_SPLIM = 1024,
+      pc_WORD_SIZE = 8,
+      pc_DOUBLE_SIZE = 8,
+      pc_CINT_SIZE = 4,
+      pc_CLONG_SIZE = 8,
+      pc_CLONG_LONG_SIZE = 8,
+      pc_BITMAP_BITS_SHIFT = 6,
+      pc_TAG_BITS = 3,
+      pc_WORDS_BIGENDIAN = False,
+      pc_DYNAMIC_BY_DEFAULT = False,
+      pc_LDV_SHIFT = 30,
+      pc_ILDV_CREATE_MASK = 1152921503533105152,
+      pc_ILDV_STATE_CREATE = 0,
+      pc_ILDV_STATE_USE = 1152921504606846976
   }
diff --git a/ghc-lib/stage1/lib/settings b/ghc-lib/stage1/lib/settings
--- a/ghc-lib/stage1/lib/settings
+++ b/ghc-lib/stage1/lib/settings
@@ -26,9 +26,9 @@
 ,("target os", "OSDarwin")
 ,("target arch", "ArchX86_64")
 ,("target word size", "8")
-,("target has GNU nonexec stack", "False")
-,("target has .ident directive", "True")
-,("target has subsections via symbols", "True")
+,("target has GNU nonexec stack", "NO")
+,("target has .ident directive", "YES")
+,("target has subsections via symbols", "YES")
 ,("target has RTS linker", "YES")
 ,("Unregisterised", "NO")
 ,("LLVM target", "x86_64-apple-darwin")
