Commit 84dc1adf authored by rl@cse.unsw.edu.au's avatar rl@cse.unsw.edu.au

Improve handling of -fdph-* flags

parent 9c966bfa
......@@ -21,7 +21,7 @@ module DynFlags (
Option(..),
DynLibLoader(..),
fFlags, xFlags,
DPHBackend(..),
dphPackage,
-- ** Manipulating DynFlags
defaultDynFlags, -- DynFlags
......@@ -892,7 +892,7 @@ data CoreToDo -- These are diff core-to-core passes,
| CoreCSE
| CoreDoRuleCheck Int{-CompilerPhase-} String -- Check for non-application of rules
-- matching this string
| CoreDoVectorisation DPHBackend
| CoreDoVectorisation PackageId
| CoreDoNothing -- Useful when building up
| CoreDoPasses [CoreToDo] -- lists of these things
......@@ -947,7 +947,7 @@ getCoreToDo dflags
vectorisation
= runWhen (dopt Opt_Vectorise dflags)
$ CoreDoPasses [ simpl_gently, CoreDoVectorisation (dphBackend dflags) ]
$ CoreDoPasses [ simpl_gently, CoreDoVectorisation (dphPackage dflags) ]
-- By default, we have 2 phases before phase 0.
......@@ -1888,6 +1888,12 @@ setDPHBackend backend
dph_packages DPHPar = ["dph-prim-par", "dph-par"]
dph_packages DPHSeq = ["dph-prim-seq", "dph-seq"]
dphPackage :: DynFlags -> PackageId
dphPackage dflags = case dphBackend dflags of
DPHPar -> dphParPackageId
DPHSeq -> dphSeqPackageId
DPHThis -> thisPackage dflags
setMainIs :: String -> DynP ()
setMainIs arg
| not (null main_fn) && isLower (head main_fn)
......
......@@ -10,7 +10,7 @@ import VectCore
import DynFlags
import HscTypes hiding ( MonadThings(..) )
import Module ( dphSeqPackageId, dphParPackageId )
import Module ( PackageId )
import CoreLint ( showPass, endPass )
import CoreSyn
import CoreUtils
......@@ -37,24 +37,19 @@ import FastString
import Control.Monad ( liftM, liftM2, zipWithM )
import Data.List ( sortBy, unzip4 )
vectorise :: DPHBackend -> HscEnv -> UniqSupply -> RuleBase -> ModGuts
vectorise :: PackageId -> HscEnv -> UniqSupply -> RuleBase -> ModGuts
-> IO (SimplCount, ModGuts)
vectorise backend hsc_env _ _ guts
= do
showPass dflags "Vectorisation"
eps <- hscEPS hsc_env
let info = hptVectInfo hsc_env `plusVectInfo` eps_vect_info eps
Just (info', guts') <- initV (backendPackage backend) hsc_env guts info
(vectModule guts)
Just (info', guts') <- initV backend hsc_env guts info (vectModule guts)
endPass dflags "Vectorisation" Opt_D_dump_vect (mg_binds guts')
return (zeroSimplCount dflags, guts' { mg_vect_info = info' })
where
dflags = hsc_dflags hsc_env
backendPackage DPHSeq = dphSeqPackageId
backendPackage DPHPar = dphParPackageId
backendPackage DPHThis = thisPackage dflags
vectModule :: ModGuts -> VM ModGuts
vectModule guts
= do
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment