summaryrefslogtreecommitdiff
path: root/compiler/GHC/SysTools.hs
diff options
context:
space:
mode:
authorSebastian Graf <sebastian.graf@kit.edu>2020-07-03 18:32:36 +0200
committerKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2020-09-01 17:33:36 +0200
commit2c906b385b4c6453c72260c87aaa48cb11c40098 (patch)
tree68f5ca6e3dae2927825358a2022fd0e4b6cba02e /compiler/GHC/SysTools.hs
parent4517a38215eb72a4824c72d97377b9325059bf55 (diff)
downloadhaskell-wip/mono-local-binds.tar.gz
Turn on -XMonoLocalBinds by default (#18430)wip/mono-local-binds
And fix the resulting type errors. Co-authored-by: Krzysztof Gogolewski <krz.gogolewski@gmail.com> Metric Decrease: parsing001
Diffstat (limited to 'compiler/GHC/SysTools.hs')
-rw-r--r--compiler/GHC/SysTools.hs12
1 files changed, 7 insertions, 5 deletions
diff --git a/compiler/GHC/SysTools.hs b/compiler/GHC/SysTools.hs
index f3b4f4cc87..57d1757fe9 100644
--- a/compiler/GHC/SysTools.hs
+++ b/compiler/GHC/SysTools.hs
@@ -138,15 +138,17 @@ lazyInitLlvmConfig :: String
-> IO LlvmConfig
lazyInitLlvmConfig top_dir
= unsafeInterleaveIO $ do -- see Note [LLVM configuration]
- targets <- readAndParse "llvm-targets" mkLlvmTarget
- passes <- readAndParse "llvm-passes" id
- return $ LlvmConfig { llvmTargets = targets, llvmPasses = passes }
+ targets <- readAndParse "llvm-targets"
+ passes <- readAndParse "llvm-passes"
+ return $ LlvmConfig { llvmTargets = fmap mkLlvmTarget <$> targets,
+ llvmPasses = passes }
where
- readAndParse name builder =
+ readAndParse :: Read a => String -> IO a
+ readAndParse name =
do let llvmConfigFile = top_dir </> name
llvmConfigStr <- readFile llvmConfigFile
case maybeReadFuzzy llvmConfigStr of
- Just s -> return (fmap builder <$> s)
+ Just s -> return s
Nothing -> pgmError ("Can't parse " ++ show llvmConfigFile)
mkLlvmTarget :: (String, String, String) -> LlvmTarget