summaryrefslogtreecommitdiff
path: root/compiler/main
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/main')
-rw-r--r--compiler/main/CodeOutput.lhs10
-rw-r--r--compiler/main/DynFlags.hs2
-rw-r--r--compiler/main/HscMain.lhs45
3 files changed, 9 insertions, 48 deletions
diff --git a/compiler/main/CodeOutput.lhs b/compiler/main/CodeOutput.lhs
index 3ff35b6b92..597f9621d3 100644
--- a/compiler/main/CodeOutput.lhs
+++ b/compiler/main/CodeOutput.lhs
@@ -18,7 +18,7 @@ import PprC ( writeCs )
import CmmLint ( cmmLint )
import Packages
import Util
-import OldCmm ( RawCmm )
+import OldCmm ( RawCmmPgm )
import HscTypes
import DynFlags
import Config
@@ -48,7 +48,7 @@ codeOutput :: DynFlags
-> ModLocation
-> ForeignStubs
-> [PackageId]
- -> [RawCmm] -- Compiled C--
+ -> [RawCmmPgm] -- Compiled C--
-> IO (Bool{-stub_h_exists-}, Maybe FilePath{-stub_c_exists-})
codeOutput dflags this_mod location foreign_stubs pkg_deps flat_abstractC
@@ -96,7 +96,7 @@ doOutput filenm io_action = bracket (openFile filenm WriteMode) hClose io_action
\begin{code}
outputC :: DynFlags
-> FilePath
- -> [RawCmm]
+ -> [RawCmmPgm]
-> [PackageId]
-> IO ()
@@ -134,7 +134,7 @@ outputC dflags filenm flat_absC packages
%************************************************************************
\begin{code}
-outputAsm :: DynFlags -> FilePath -> [RawCmm] -> IO ()
+outputAsm :: DynFlags -> FilePath -> [RawCmmPgm] -> IO ()
outputAsm dflags filenm flat_absC
| cGhcWithNativeCodeGen == "YES"
= do ncg_uniqs <- mkSplitUniqSupply 'n'
@@ -155,7 +155,7 @@ outputAsm dflags filenm flat_absC
%************************************************************************
\begin{code}
-outputLlvm :: DynFlags -> FilePath -> [RawCmm] -> IO ()
+outputLlvm :: DynFlags -> FilePath -> [RawCmmPgm] -> IO ()
outputLlvm dflags filenm flat_absC
= do ncg_uniqs <- mkSplitUniqSupply 'n'
doOutput filenm $ \f -> llvmCodeGen dflags f ncg_uniqs flat_absC
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 5b23876b36..03530b1e54 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -283,7 +283,6 @@ data DynFlag
-- temporary flags
| Opt_RunCPS
| Opt_RunCPSZ
- | Opt_ConvertToZipCfgAndBack
| Opt_AutoLinkPackages
| Opt_ImplicitImportQualified
| Opt_TryNewCodeGen
@@ -1734,7 +1733,6 @@ fFlags = [
( "run-cps", AlwaysAllowed, Opt_RunCPS, nop ),
( "run-cpsz", AlwaysAllowed, Opt_RunCPSZ, nop ),
( "new-codegen", AlwaysAllowed, Opt_TryNewCodeGen, nop ),
- ( "convert-to-zipper-and-back", AlwaysAllowed, Opt_ConvertToZipCfgAndBack, nop ),
( "vectorise", AlwaysAllowed, Opt_Vectorise, nop ),
( "regs-graph", AlwaysAllowed, Opt_RegsGraph, nop ),
( "regs-iterative", AlwaysAllowed, Opt_RegsIterative, nop ),
diff --git a/compiler/main/HscMain.lhs b/compiler/main/HscMain.lhs
index ae858fde28..c43c396c64 100644
--- a/compiler/main/HscMain.lhs
+++ b/compiler/main/HscMain.lhs
@@ -115,7 +115,7 @@ import TyCon ( TyCon, isDataTyCon )
import Name ( Name, NamedThing(..) )
import SimplStg ( stg2stg )
import CodeGen ( codeGen )
-import OldCmm ( Cmm )
+import OldCmm as Old ( CmmPgm )
import PprCmm ( pprCmms )
import CmmParse ( parseCmmFile )
import CmmBuildInfoTables
@@ -123,7 +123,6 @@ import CmmPipeline
import CmmInfo
import OptimizationFuel ( initOptFuelState )
import CmmCvt
-import CmmContFlowOpt ( runCmmContFlowOpts )
import CodeOutput
import NameEnv ( emptyNameEnv )
import NameSet ( emptyNameSet )
@@ -1114,17 +1113,14 @@ hscGenHardCode cgguts mod_summary
------------------ Code generation ------------------
cmms <- if dopt Opt_TryNewCodeGen dflags
- then do cmms <- tryNewCodeGen hsc_env this_mod data_tycons
+ then tryNewCodeGen hsc_env this_mod data_tycons
cost_centre_info
stg_binds hpc_info
- return cmms
else {-# SCC "CodeGen" #-}
codeGen dflags this_mod data_tycons
cost_centre_info
stg_binds hpc_info
- --- Optionally run experimental Cmm transformations ---
- cmms <- optionallyConvertAndOrCPS hsc_env cmms
-- unless certain dflags are on, the identity function
------------------ Code output -----------------------
rawcmms <- cmmToRawCmm cmms
@@ -1179,8 +1175,7 @@ hscCompileCmmFile hsc_env filename
let dflags = hsc_dflags hsc_env
cmm <- ioMsgMaybe $ parseCmmFile dflags filename
liftIO $ do
- cmms <- optionallyConvertAndOrCPS hsc_env [cmm]
- rawCmms <- cmmToRawCmm cmms
+ rawCmms <- cmmToRawCmm [cmm]
_ <- codeOutput dflags no_mod no_loc NoStubs [] rawCmms
return ()
where
@@ -1195,7 +1190,7 @@ tryNewCodeGen :: HscEnv -> Module -> [TyCon]
-> CollectedCCs
-> [(StgBinding,[(Id,[Id])])]
-> HpcInfo
- -> IO [Cmm]
+ -> IO [Old.CmmPgm]
tryNewCodeGen hsc_env this_mod data_tycons
cost_centre_info stg_binds hpc_info =
do { let dflags = hsc_dflags hsc_env
@@ -1216,38 +1211,6 @@ tryNewCodeGen hsc_env this_mod data_tycons
; return prog' }
-optionallyConvertAndOrCPS :: HscEnv -> [Cmm] -> IO [Cmm]
-optionallyConvertAndOrCPS hsc_env cmms =
- do let dflags = hsc_dflags hsc_env
- -------- Optionally convert to and from zipper ------
- cmms <- if dopt Opt_ConvertToZipCfgAndBack dflags
- then mapM (testCmmConversion hsc_env) cmms
- else return cmms
- return cmms
-
-
-testCmmConversion :: HscEnv -> Cmm -> IO Cmm
-testCmmConversion hsc_env cmm =
- do let dflags = hsc_dflags hsc_env
- platform = targetPlatform dflags
- showPass dflags "CmmToCmm"
- dumpIfSet_dyn dflags Opt_D_dump_cvt_cmm "C-- pre-conversion" (pprPlatform platform cmm)
- --continuationC <- cmmCPS dflags abstractC >>= cmmToRawCmm
- us <- mkSplitUniqSupply 'C'
- let zgraph = initUs_ us (cmmToZgraph platform cmm)
- chosen_graph <-
- if dopt Opt_RunCPSZ dflags
- then do us <- mkSplitUniqSupply 'S'
- let topSRT = initUs_ us emptySRT
- (_, [zgraph]) <- cmmPipeline hsc_env (topSRT, []) zgraph
- return zgraph
- else return (runCmmContFlowOpts zgraph)
- dumpIfSet_dyn dflags Opt_D_dump_cmmz "C-- Zipper Graph" (pprPlatform platform chosen_graph)
- showPass dflags "Convert from Z back to Cmm"
- let cvt = cmmOfZgraph chosen_graph
- dumpIfSet_dyn dflags Opt_D_dump_cvt_cmm "C-- post-conversion" (pprPlatform platform cvt)
- return cvt
-
myCoreToStg :: DynFlags -> Module -> [CoreBind]
-> IO ( [(StgBinding,[(Id,[Id])])] -- output program
, CollectedCCs) -- cost centre info (declared and used)