Remove (most of) the FiniteMap wrapper
[ghc-hetmet.git] / compiler / main / SysTools.lhs
index 29889db..1693aa0 100644 (file)
@@ -18,7 +18,6 @@ module SysTools (
         runAs, runLink,          -- [Option] -> IO ()
         runMkDLL,
         runWindres,
-        runLlvmAs,
         runLlvmOpt,
         runLlvmLlc,
 
@@ -46,7 +45,6 @@ import ErrUtils
 import Panic
 import Util
 import DynFlags
-import FiniteMap
 
 import Exception
 import Data.IORef
@@ -59,6 +57,7 @@ import System.IO.Error as IO
 import System.Directory
 import Data.Char
 import Data.List
+import qualified Data.Map as Map
 
 #ifndef mingw32_HOST_OS
 import qualified System.Posix.Internals
@@ -223,8 +222,7 @@ initSysTools mbMinusB dflags0
                 ld_prog  = gcc_prog
 
         -- figure out llvm location. (TODO: Acutally implement).
-        ; let la_prog = "llvm-as"
-              lc_prog = "llc"
+        ; let lc_prog = "llc"
               lo_prog = "opt"
 
         ; return dflags1{
@@ -244,7 +242,6 @@ initSysTools mbMinusB dflags0
                         pgm_T   = touch_path,
                         pgm_sysman = top_dir ++ "/ghc/rts/parallel/SysMan",
                         pgm_windres = windres_path,
-                        pgm_la  = (la_prog,[]),
                         pgm_lo  = (lo_prog,[]),
                         pgm_lc  = (lc_prog,[])
                         -- Hans: this isn't right in general, but you can
@@ -392,11 +389,6 @@ runAs dflags args = do
   mb_env <- getGccEnv args1
   runSomethingFiltered dflags id "Assembler" p args1 mb_env
 
-runLlvmAs :: DynFlags -> [Option] -> IO ()
-runLlvmAs dflags args = do
-  let (p,args0) = pgm_la dflags
-  runSomething dflags "LLVM Assembler" p (args0++args)
-
 runLlvmOpt :: DynFlags -> [Option] -> IO ()
 runLlvmOpt dflags args = do
   let (p,args0) = pgm_lo dflags
@@ -480,8 +472,8 @@ cleanTempDirs dflags
    = unless (dopt Opt_KeepTmpFiles dflags)
    $ do let ref = dirsToClean dflags
         ds <- readIORef ref
-        removeTmpDirs dflags (eltsFM ds)
-        writeIORef ref emptyFM
+        removeTmpDirs dflags (Map.elems ds)
+        writeIORef ref Map.empty
 
 cleanTempFiles :: DynFlags -> IO ()
 cleanTempFiles dflags
@@ -523,7 +515,7 @@ getTempDir :: DynFlags -> IO FilePath
 getTempDir dflags@(DynFlags{tmpDir=tmp_dir})
   = do let ref = dirsToClean dflags
        mapping <- readIORef ref
-       case lookupFM mapping tmp_dir of
+       case Map.lookup tmp_dir mapping of
            Nothing ->
                do x <- getProcessID
                   let prefix = tmp_dir </> "ghc" ++ show x ++ "_"
@@ -532,7 +524,7 @@ getTempDir dflags@(DynFlags{tmpDir=tmp_dir})
                       mkTempDir x
                        = let dirname = prefix ++ show x
                          in do createDirectory dirname
-                               let mapping' = addToFM mapping tmp_dir dirname
+                               let mapping' = Map.insert tmp_dir dirname mapping
                                writeIORef ref mapping'
                                debugTraceMsg dflags 2 (ptext (sLit "Created temporary directory:") <+> text dirname)
                                return dirname