X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FCodeOutput.lhs;h=3ff665e422956ec48602f5842a62284d50bc3435;hb=50027272414438955dbc41696541cbd25da55883;hp=3335b89b5650a51014bfc71f1665081a61c7a97f;hpb=250d897e972a04af546eab8285f92f75b27cf6d5;p=ghc-hetmet.git diff --git a/ghc/compiler/main/CodeOutput.lhs b/ghc/compiler/main/CodeOutput.lhs index 3335b89..3ff665e 100644 --- a/ghc/compiler/main/CodeOutput.lhs +++ b/ghc/compiler/main/CodeOutput.lhs @@ -9,6 +9,7 @@ module CodeOutput( codeOutput ) where #include "HsVersions.h" #ifndef OMIT_NATIVE_CODEGEN +import UniqSupply ( mkSplitUniqSupply ) import AsmCodeGen ( nativeCodeGen ) #endif @@ -19,6 +20,7 @@ import IlxGen ( ilxGen ) import JavaGen ( javaGen ) import qualified PrintJava +import DriverState ( v_HCHeader ) import TyCon ( TyCon ) import Id ( Id ) import CoreSyn ( CoreBind ) @@ -32,9 +34,9 @@ import ErrUtils ( dumpIfSet_dyn, showPass ) import Outputable import CmdLineOpts ( DynFlags, HscLang(..), dopt_OutName ) import TmpFiles ( newTempName ) -import UniqSupply ( mkSplitUniqSupply ) -import IO ( IOMode(..), hClose, openFile, Handle ) +import IOExts +import IO \end{code} @@ -73,6 +75,10 @@ codeOutput dflags mod_name tycons core_binds stg_binds >> return stub_names HscJava -> outputJava dflags filenm mod_name tycons core_binds >> return stub_names +#ifdef ILX + HscILX -> outputIlx dflags filenm mod_name tycons stg_binds + >> return stub_names +#endif } doOutput :: String -> (Handle -> IO ()) -> IO () @@ -94,7 +100,10 @@ doOutput filenm io_action \begin{code} outputC dflags filenm flat_absC = do dumpIfSet_dyn dflags Opt_D_dump_realC "Real C" (dumpRealC flat_absC) - doOutput filenm (\ h -> writeRealC h flat_absC) + header <- readIORef v_HCHeader + doOutput filenm $ \ h -> do + hPutStr h header + writeRealC h flat_absC \end{code} @@ -146,6 +155,22 @@ outputJava dflags filenm mod tycons core_binds %************************************************************************ %* * +\subsection{Ilx} +%* * +%************************************************************************ + +\begin{code} +#ifdef ILX +outputIlx dflags filename mod tycons stg_binds + = doOutput filename (\ f -> printForC f pp_ilx) + where + pp_ilx = ilxGen mod tycons stg_binds +#endif +\end{code} + + +%************************************************************************ +%* * \subsection{Foreign import/export} %* * %************************************************************************