FIX panic from the GHC API
[ghc-hetmet.git] / compiler / main / HscMain.lhs
index c86bd48..092d163 100644 (file)
@@ -33,6 +33,7 @@ import CoreSyn                ( CoreExpr )
 import CoreTidy                ( tidyExpr )
 import CorePrep                ( corePrepExpr )
 import Flattening      ( flattenExpr )
+import Vectorise        ( vectorise )
 import Desugar          ( deSugarExpr )
 import SimplCore        ( simplifyExpr )
 import TcRnDriver      ( tcRnStmt, tcRnExpr, tcRnType ) 
@@ -66,6 +67,7 @@ import PrelInfo               ( wiredInThings, basicKnownKeyNames )
 import MkIface         ( checkOldIface, mkIface, writeIfaceFile )
 import Desugar          ( deSugar )
 import Flattening       ( flatten )
+import Vectorise        ( vectorise )
 import SimplCore        ( core2core )
 import TidyPgm         ( tidyProgram, mkBootModDetails )
 import CorePrep                ( corePrepPgm )
@@ -75,6 +77,8 @@ import Name           ( Name, NamedThing(..) )
 import SimplStg                ( stg2stg )
 import CodeGen         ( codeGen )
 import CmmParse                ( parseCmmFile )
+import CmmCPS
+import CmmInfo
 import CodeOutput      ( codeOutput )
 import NameEnv          ( emptyNameEnv )
 
@@ -474,13 +478,13 @@ hscSimplify :: ModGuts -> Comp ModGuts
 hscSimplify ds_result
   = do hsc_env <- gets compHscEnv
        liftIO $ do
-       flat_result <- {-# SCC "Flattening" #-}
-                      flatten hsc_env ds_result
+       vect_result <- {-# SCC "Vectorisation" #-}
+                      vectorise hsc_env ds_result
            -------------------
            -- SIMPLIFY
            -------------------
        simpl_result <- {-# SCC "Core2Core" #-}
-                       core2core hsc_env flat_result
+                       core2core hsc_env vect_result
        return simpl_result
 
 --------------------------------------------------------------
@@ -603,10 +607,13 @@ hscCompile cgguts
                       codeGen dflags this_mod data_tycons
                               foreign_stubs dir_imps cost_centre_info
                               stg_binds hpc_info
+         ------------------  Convert to CPS --------------------
+         --continuationC <- cmmCPS dflags abstractC >>= cmmToRawCmm
+         continuationC <- cmmToRawCmm abstractC
          ------------------  Code output -----------------------
          (stub_h_exists,stub_c_exists)
              <- codeOutput dflags this_mod location foreign_stubs 
-                dependencies abstractC
+                dependencies continuationC
          return stub_c_exists
 
 hscConst :: b -> a -> Comp b
@@ -687,8 +694,7 @@ hscFileCheck hsc_env mod_summary compileToCore = do {
                                md_rules     = [panic "no rules"],
                                   -- Rules are CoreRules, not the
                                   -- RuleDecls we get out of the typechecker
-                                md_vect_info = 
-                                  panic "HscMain.hscFileCheck: no VectInfo"
+                                md_vect_info = noVectInfo
                                    -- VectInfo is added by the Core 
                                    -- vectorisation pass
                           }
@@ -718,7 +724,9 @@ hscCmmFile dflags filename = do
   case maybe_cmm of
     Nothing -> return False
     Just cmm -> do
-       codeOutput dflags no_mod no_loc NoStubs [] [cmm]
+        --continuationC <- cmmCPS dflags [cmm] >>= cmmToRawCmm
+        continuationC <- cmmToRawCmm [cmm]
+       codeOutput dflags no_mod no_loc NoStubs [] continuationC
        return True
   where
        no_mod = panic "hscCmmFile: no_mod"