Fix scoped type variables for expression type signatures
[ghc-hetmet.git] / compiler / main / DriverPipeline.hs
index 58cc49e..690328d 100644 (file)
@@ -29,7 +29,7 @@ module DriverPipeline (
 import Packages
 import HeaderInfo
 import DriverPhases
-import SysTools                ( newTempName, addFilesToClean, getSysMan, copy )
+import SysTools                ( newTempName, addFilesToClean, copy )
 import qualified SysTools      
 import HscMain
 import Finder
@@ -144,8 +144,8 @@ compile hsc_env mod_summary maybe_old_linkable old_iface mod_index nmods = do
                                extCoreName = basename ++ ".hcr" }
 
    -- -no-recomp should also work with --make
-   let do_recomp = dopt Opt_RecompChecking dflags
-       source_unchanged = isJust maybe_old_linkable && do_recomp
+   let force_recomp = dopt Opt_ForceRecomp dflags
+       source_unchanged = isJust maybe_old_linkable && not force_recomp
        hsc_env' = hsc_env { hsc_dflags = dflags' }
        object_filename = ml_obj_file location
 
@@ -302,7 +302,7 @@ link BatchCompile dflags batch_attempt_linking hpt
                | Right t <- e_exe_time = 
                        any (t <) (map linkableTime linkables)
 
-       if dopt Opt_RecompChecking dflags && not linking_needed
+       if not (dopt Opt_ForceRecomp dflags) && not linking_needed
           then do debugTraceMsg dflags 2 (text exe_file <+> ptext SLIT("is up to date, linking not required."))
                   return Succeeded
           else do
@@ -688,9 +688,9 @@ runPhase (Hsc src_flavour) stop dflags0 basename suff input_fn get_output_fn _ma
   -- date wrt M.hs (or M.o doesn't exist) so we must recompile regardless.
        src_timestamp <- getModificationTime (basename `joinFileExt` suff)
 
-       let do_recomp = dopt Opt_RecompChecking dflags
+       let force_recomp = dopt Opt_ForceRecomp dflags
        source_unchanged <- 
-          if not do_recomp || not (isStopLn stop)
+          if force_recomp || not (isStopLn stop)
                -- Set source_unchanged to False unconditionally if
                --      (a) recompilation checker is off, or
                --      (b) we aren't going all the way to .o file (e.g. ghc -S)
@@ -789,7 +789,7 @@ runPhase Cmm stop dflags basename suff input_fn get_output_fn maybe_loc
 -- way too many hacks, and I can't say I've ever used it anyway.
 
 runPhase cc_phase stop dflags basename suff input_fn get_output_fn maybe_loc
-   | cc_phase `eqPhase` Cc || cc_phase `eqPhase` HCc
+   | cc_phase `eqPhase` Cc || cc_phase `eqPhase` Ccpp || cc_phase `eqPhase` HCc
    = do        let cc_opts = getOpts dflags opt_c
            hcc = cc_phase `eqPhase` HCc
 
@@ -851,7 +851,8 @@ runPhase cc_phase stop dflags basename suff input_fn get_output_fn maybe_loc
                -- compiling .hc files, by adding the -x c option.
                -- Also useful for plain .c files, just in case GHC saw a 
                -- -x c option.
-                       [ SysTools.Option "-x", SysTools.Option "c"] ++
+                       [ SysTools.Option "-x", if cc_phase `eqPhase` Ccpp
+                                                then SysTools.Option "c++" else SysTools.Option "c"] ++
                        [ SysTools.FileOption "" input_fn
                        , SysTools.Option "-o"
                        , SysTools.FileOption "" output_fn
@@ -1044,9 +1045,9 @@ runPhase SplitAs stop dflags basename _suff _input_fn get_output_fn maybe_loc
 -- we don't need the generality of a phase (MoveBinary is always
 -- done after linking and makes only sense in a parallel setup)   -- HWL
 
-runPhase_MoveBinary input_fn
+runPhase_MoveBinary dflags input_fn
   = do 
-        sysMan   <- getSysMan
+        let sysMan = pgm_sysman dflags
         pvm_root <- getEnv "PVM_ROOT"
         pvm_arch <- getEnv "PVM_ARCH"
         let 
@@ -1243,7 +1244,7 @@ staticLink dflags o_files dep_packages = do
 
     -- parallel only: move binary to another dir -- HWL
     when (WayPar `elem` ways)
-        (do success <- runPhase_MoveBinary output_fn
+        (do success <- runPhase_MoveBinary dflags output_fn
              if success then return ()
                         else throwDyn (InstallationError ("cannot move binary to PVM dir")))