module GHC.Driver.Config.HsToCore
  ( initBangOpts
  )
where

import GHC.Types.Id.Make
import GHC.Driver.DynFlags
import qualified GHC.LanguageExtensions as LangExt

initBangOpts :: DynFlags -> BangOpts
initBangOpts :: DynFlags -> BangOpts
initBangOpts DynFlags
dflags = BangOpts
  { bang_opt_strict_data :: Bool
bang_opt_strict_data   = Extension -> DynFlags -> Bool
xopt Extension
LangExt.StrictData DynFlags
dflags
  , bang_opt_unbox_disable :: Bool
bang_opt_unbox_disable = GeneralFlag -> DynFlags -> Bool
gopt GeneralFlag
Opt_OmitInterfacePragmas DynFlags
dflags
      -- Don't unbox if we aren't optimising; rather arbitrarily,
      -- we use -fomit-iface-pragmas as the indication
  , bang_opt_unbox_strict :: Bool
bang_opt_unbox_strict  = GeneralFlag -> DynFlags -> Bool
gopt GeneralFlag
Opt_UnboxStrictFields DynFlags
dflags
  , bang_opt_unbox_small :: Bool
bang_opt_unbox_small   = GeneralFlag -> DynFlags -> Bool
gopt GeneralFlag
Opt_UnboxSmallStrictFields DynFlags
dflags
  }