+
+ -- We compile in two stages, because the file may have an
+ -- OPTIONS pragma that affects the compilation pipeline (eg. -fvia-C)
+
+ -- preprocess
+ pp <- if mode == StopBefore Hsc then return src else do
+ phases <- genPipeline (StopBefore Hsc) "none"
+ False{-not persistent-} defaultHscLang src
+ runPipeline phases src False{-no linking-} False{-no -o flag-}
+
+ -- compile
+ dyn_flags <- readIORef v_DynFlags
+ phases <- genPipeline mode stop_flag True (hscLang dyn_flags) pp
+ r <- runPipeline phases pp False{-no linking-} False{-no -o flag-}
+