refactoring only: use the parameterised InstalledPackageInfo
[ghc-hetmet.git] / compiler / main / CodeOutput.lhs
index 0e52077..6d11c65 100644 (file)
@@ -4,6 +4,13 @@
 \section{Code output phase}
 
 \begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
 module CodeOutput( codeOutput, outputForeignStubs ) where
 
 #include "HsVersions.h"
@@ -23,17 +30,16 @@ import Finder               ( mkStubPaths )
 import PprC            ( writeCs )
 import CmmLint         ( cmmLint )
 import Packages
-import PackageConfig   ( rtsPackageId )
 import Util
 import FastString      ( unpackFS )
-import Cmm             ( Cmm )
+import Cmm             ( RawCmm )
 import HscTypes
 import DynFlags
 
 import ErrUtils                ( dumpIfSet_dyn, showPass, ghcExit )
 import Outputable
 import Pretty          ( Mode(..), printDoc )
-import Module          ( Module, ModLocation(..), moduleName )
+import Module
 import List            ( nub )
 import Maybes          ( firstJust )
 
@@ -55,7 +61,7 @@ codeOutput :: DynFlags
           -> ModLocation
           -> ForeignStubs
           -> [PackageId]
-          -> [Cmm]                     -- Compiled C--
+          -> [RawCmm]                  -- Compiled C--
           -> IO (Bool{-stub_h_exists-}, Bool{-stub_c_exists-})
 
 codeOutput dflags this_mod location foreign_stubs pkg_deps flat_abstractC
@@ -124,8 +130,8 @@ outputC dflags filenm mod location flat_absC
        
           ffi_decl_headers 
              = case foreign_stubs of
-                 NoStubs                 -> []
-                 ForeignStubs _ _ fdhs _ -> map unpackFS (nub fdhs)
+                 NoStubs               -> []
+                 ForeignStubs _ _ fdhs -> map unpackFS (nub fdhs)
                        -- Remove duplicates, because distinct foreign import decls
                        -- may cite the same #include.  Order doesn't matter.
 
@@ -144,10 +150,10 @@ outputC dflags filenm mod location flat_absC
          hPutStr h ("/* GHC_PACKAGES " ++ unwords pkg_names ++ "\n*/\n")
          hPutStr h cc_injects
          when stub_h_exists $ 
-            hPutStrLn h ("#include \"" ++ (filenameOf stub_h) ++ "\"")
+            hPutStrLn h ("#include \"" ++ inc_stub_h ++ "\"")
          writeCs dflags h flat_absC
   where
-    (_, stub_h) = mkStubPaths dflags (moduleName mod) location
+    (_, _, inc_stub_h) = mkStubPaths dflags (moduleName mod) location
 \end{code}
 
 
@@ -163,11 +169,10 @@ outputAsm dflags filenm flat_absC
 #ifndef OMIT_NATIVE_CODEGEN
 
   = do ncg_uniqs <- mkSplitUniqSupply 'n'
-       ncg_output_d <- _scc_ "NativeCodeGen" 
-                         nativeCodeGen dflags flat_absC ncg_uniqs
-       dumpIfSet_dyn dflags Opt_D_dump_asm "Asm code" (docToSDoc ncg_output_d)
-       _scc_ "OutputAsm" doOutput filenm $
-          \f -> printDoc LeftMode f ncg_output_d
+
+       {-# SCC "OutputAsm" #-} doOutput filenm $
+          \f -> {-# SCC "NativeCodeGen" #-}
+                nativeCodeGen dflags f ncg_uniqs flat_absC
   where
 
 #else /* OMIT_NATIVE_CODEGEN */
@@ -217,7 +222,7 @@ outputForeignStubs dflags mod location stubs
        stub_h_exists <- doesFileExist stub_h
        return (stub_h_exists, stub_c_exists)
 
-  | ForeignStubs h_code c_code _ _ <- stubs
+  | ForeignStubs h_code c_code _ <- stubs
   = do
        let
            stub_c_output_d = pprCode CStyle c_code
@@ -259,7 +264,7 @@ outputForeignStubs dflags mod location stubs
 
         return (stub_h_file_exists, stub_c_file_exists)
   where
-   (stub_c, stub_h) = mkStubPaths dflags (moduleName mod) location
+   (stub_c, stub_h, _) = mkStubPaths dflags (moduleName mod) location
 
 cplusplus_hdr = "#ifdef __cplusplus\nextern \"C\" {\n#endif\n"
 cplusplus_ftr = "#ifdef __cplusplus\n}\n#endif\n"