blob: 18721bf845b5135989c1ae5d4da9d0698ceb46f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
module GHC.Driver.Config.CmmToLlvm
( initLlvmCgConfig
) where
import GHC.Prelude
import GHC.Driver.Session
import GHC.Platform
import GHC.CmmToLlvm.Config
import GHC.SysTools.Tasks
import GHC.Utils.Outputable
import GHC.Utils.Logger
-- | Initialize the Llvm code generator configuration from DynFlags
initLlvmCgConfig :: Logger -> DynFlags -> IO LlvmCgConfig
initLlvmCgConfig logger dflags = do
version <- figureLlvmVersion logger dflags
pure $! LlvmCgConfig {
llvmCgPlatform = targetPlatform dflags
, llvmCgContext = initSDocContext dflags (PprCode CStyle)
, llvmCgFillUndefWithGarbage = gopt Opt_LlvmFillUndefWithGarbage dflags
, llvmCgSplitSection = gopt Opt_SplitSections dflags
, llvmCgBmiVersion = case platformArch (targetPlatform dflags) of
ArchX86_64 -> bmiVersion dflags
ArchX86 -> bmiVersion dflags
_ -> Nothing
, llvmCgLlvmVersion = version
, llvmCgDoWarn = wopt Opt_WarnUnsupportedLlvmVersion dflags
, llvmCgLlvmTarget = platformMisc_llvmTarget $! platformMisc dflags
, llvmCgLlvmConfig = llvmConfig dflags
}
|