[project @ 2000-11-06 08:15:20 by simonpj]
[ghc-hetmet.git] / ghc / compiler / main / CodeOutput.lhs
index a8b7d01..91ff5ed 100644 (file)
@@ -21,18 +21,17 @@ import qualified PrintJava
 
 import TyCon           ( TyCon )
 import Id              ( Id )
-import Class           ( Class )
 import CoreSyn         ( CoreBind )
 import StgSyn          ( StgBinding )
 import AbsCSyn         ( AbstractC )
 import PprAbsC         ( dumpRealC, writeRealC )
-import UniqSupply      ( UniqSupply )
 import Module          ( Module )
 import CmdLineOpts
 import ErrUtils                ( dumpIfSet_dyn )
 import Outputable
 import CmdLineOpts     ( DynFlags, HscLang(..), dopt_OutName )
 import TmpFiles                ( newTempName )
+import UniqSupply      ( mkSplitUniqSupply )
 
 import IO              ( IOMode(..), hClose, openFile, Handle )
 \end{code}
@@ -47,16 +46,15 @@ import IO           ( IOMode(..), hClose, openFile, Handle )
 \begin{code}
 codeOutput :: DynFlags
           -> Module
-          -> [TyCon] -> [Class]        -- Local tycons and classes
+          -> [TyCon]                   -- Local tycons
           -> [CoreBind]                -- Core bindings
           -> [(StgBinding,[Id])]       -- The STG program with SRTs
           -> SDoc              -- C stubs for foreign exported functions
           -> SDoc              -- Header file prototype for foreign exported functions
           -> AbstractC         -- Compiled abstract C
-          -> UniqSupply
           -> IO (Maybe FilePath, Maybe FilePath)
-codeOutput dflags mod_name tycons classes core_binds stg_binds 
-          c_code h_code flat_abstractC ncg_uniqs
+codeOutput dflags mod_name tycons core_binds stg_binds 
+          c_code h_code flat_abstractC
   = -- You can have C (c_output) or assembly-language (ncg_output),
     -- but not both.  [Allowing for both gives a space leak on
     -- flat_abstractC.  WDP 94/10]
@@ -66,8 +64,8 @@ codeOutput dflags mod_name tycons classes core_binds stg_binds
     do let filenm = dopt_OutName dflags 
        stub_names <- outputForeignStubs dflags c_code h_code
        case dopt_HscLang dflags of
-          HscInterpreter -> return stub_names
-          HscAsm         -> outputAsm dflags filenm flat_abstractC ncg_uniqs
+          HscInterpreted -> return stub_names
+          HscAsm         -> outputAsm dflags filenm flat_abstractC
                             >> return stub_names
           HscC           -> outputC dflags filenm flat_abstractC       
                             >> return stub_names
@@ -104,15 +102,16 @@ outputC dflags filenm flat_absC
 %************************************************************************
 
 \begin{code}
-outputAsm dflags filenm flat_absC ncg_uniqs
+outputAsm dflags filenm flat_absC
 
 #ifndef OMIT_NATIVE_CODEGEN
 
-  = do dumpIfSet_dyn dflags Opt_D_dump_stix "Final stix code" stix_final
+  = do ncg_uniqs <- mkSplitUniqSupply 'n'
+       let (stix_final, ncg_output_d) = nativeCodeGen flat_absC ncg_uniqs
+       dumpIfSet_dyn dflags Opt_D_dump_stix "Final stix code" stix_final
        dumpIfSet_dyn dflags Opt_D_dump_asm "Asm code" ncg_output_d
        doOutput filenm ( \f -> printForAsm f ncg_output_d)
   where
-    (stix_final, ncg_output_d) = nativeCodeGen flat_absC ncg_uniqs
 
 #else /* OMIT_NATIVE_CODEGEN */