GHC.Driver.Pipeline.Execute
Documentation
Constructors
HookedUse | |
Fields
|
runPipeline :: Hooks -> HookedUse a -> IO a Source #
The default mechanism to run a pipeline, see Note [The Pipeline Monad]
runHscBackendPhase :: PipeEnv -> HscEnv -> ModuleName -> HscSource -> ModLocation -> HscBackendAction -> IO ([FilePath], ModIface, Maybe Linkable, FilePath) Source #
runHscPhase :: PipeEnv -> HscEnv -> FilePath -> HscSource -> IO (HscEnv, ModSummary, HscRecompStatus) Source #
mkOneShotModLocation :: PipeEnv -> DynFlags -> HscSource -> ModuleName -> IO ModLocation Source #
Calculate the ModLocation from the provided DynFlags. This function is only used in one-shot mode and therefore takes into account the effect of -o/-ohi flags (which do nothing in --make mode)
runHscTcPhase :: HscEnv -> ModSummary -> IO (FrontendResult, Messages GhcMessage) Source #
runHscPostTcPhase :: HscEnv -> ModSummary -> FrontendResult -> Messages GhcMessage -> Maybe Fingerprint -> IO HscBackendAction Source #
getOutputFilename :: Logger -> TmpFs -> Phase -> PipelineOutput -> String -> DynFlags -> Phase -> Maybe ModLocation -> IO FilePath Source #
Computes the next output filename for something in the compilation pipeline. This is controlled by several variables:
Phase
: the last phase to be run (e.g.stopPhase
). This is used to tell if we're in the last phase or not, because in that case flags like-o
may be important.PipelineOutput
: is this intended to be aTemporary
orPersistent
build output? Temporary files just go in a fresh temporary name.String
: what was the basename of the original input file?DynFlags
: the obvious thingPhase
: the phase we want to determine the output filename of.Maybe ModLocation
: theModLocation
of the module we're compiling; this can be used to override the default output of an object file. (TODO: do we actually need this?)
LLVM Options. These are flags to be passed to opt and llc, to ensure consistency we list them in pairs, so that they form groups.
doCpp :: Logger -> TmpFs -> DynFlags -> UnitEnv -> Bool -> FilePath -> FilePath -> IO () Source #
Run CPP
UnitEnv is needed to compute MIN_VERSION macros