X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDriverPhases.hs;h=d85335ff347ad58973f739ef4eff2dd80ce966d7;hb=5289f5d85610f71625a439747a09384876655eb5;hp=398da79b79c1725b9be46aa54d14ca090e0480bd;hpb=49a8e5c021009430d373d6224b29004c7d18c408;p=ghc-hetmet.git diff --git a/compiler/main/DriverPhases.hs b/compiler/main/DriverPhases.hs index 398da79..d85335f 100644 --- a/compiler/main/DriverPhases.hs +++ b/compiler/main/DriverPhases.hs @@ -35,7 +35,7 @@ module DriverPhases ( #include "HsVersions.h" -import Panic ( panic ) +import Outputable import System.FilePath ----------------------------------------------------------------------------- @@ -80,9 +80,9 @@ data Phase | SplitMangle -- after mangler if splitting | SplitAs | As - | LlvmAs -- LLVM assembly to bitcode file - | LlvmOpt -- Run LLVM opt tool over llvm assembly - | LlvmLlc -- LLVM bitcode to native assembly + | LlvmOpt -- Run LLVM opt tool over llvm assembly + | LlvmLlc -- LLVM bitcode to native assembly + | LlvmMangle -- Fix up TNTC by processing assembly produced by LLVM | CmmCpp -- pre-process Cmm source | Cmm -- parse & compile Cmm code @@ -91,6 +91,9 @@ data Phase | StopLn -- Stop, but linking will follow, so generate .o file deriving (Eq, Show) +instance Outputable Phase where + ppr p = text (show p) + anyHsc :: Phase anyHsc = Hsc (panic "anyHsc") @@ -112,9 +115,9 @@ eqPhase Mangle Mangle = True eqPhase SplitMangle SplitMangle = True eqPhase SplitAs SplitAs = True eqPhase As As = True -eqPhase LlvmAs LlvmAs = True eqPhase LlvmOpt LlvmOpt = True eqPhase LlvmLlc LlvmLlc = True +eqPhase LlvmMangle LlvmMangle = True eqPhase CmmCpp CmmCpp = True eqPhase Cmm Cmm = True eqPhase StopLn StopLn = True @@ -139,9 +142,13 @@ nextPhase HCc = Mangle nextPhase Mangle = SplitMangle nextPhase SplitMangle = As nextPhase As = SplitAs -nextPhase LlvmAs = LlvmOpt -nextPhase LlvmOpt = LlvmLlc -nextPhase LlvmLlc = As +nextPhase LlvmOpt = LlvmLlc +#if darwin_TARGET_OS +nextPhase LlvmLlc = LlvmMangle +#else +nextPhase LlvmLlc = As +#endif +nextPhase LlvmMangle = As nextPhase SplitAs = StopLn nextPhase Ccpp = As nextPhase Cc = As @@ -169,9 +176,9 @@ startPhase "raw_s" = Mangle startPhase "split_s" = SplitMangle startPhase "s" = As startPhase "S" = As -startPhase "ll" = LlvmAs -startPhase "bc" = LlvmOpt -startPhase "opt_bc" = LlvmLlc +startPhase "ll" = LlvmOpt +startPhase "bc" = LlvmLlc +startPhase "lm_s" = LlvmMangle startPhase "o" = StopLn startPhase "cmm" = CmmCpp startPhase "cmmcpp" = Cmm @@ -196,9 +203,9 @@ phaseInputExt Cc = "c" phaseInputExt Mangle = "raw_s" phaseInputExt SplitMangle = "split_s" -- not really generated phaseInputExt As = "s" -phaseInputExt LlvmAs = "ll" -phaseInputExt LlvmOpt = "bc" -phaseInputExt LlvmLlc = "opt_bc" +phaseInputExt LlvmOpt = "ll" +phaseInputExt LlvmLlc = "bc" +phaseInputExt LlvmMangle = "lm_s" phaseInputExt SplitAs = "split_s" -- not really generated phaseInputExt CmmCpp = "cmm" phaseInputExt Cmm = "cmmcpp" @@ -208,9 +215,9 @@ haskellish_src_suffixes, haskellish_suffixes, cish_suffixes, extcoreish_suffixes, haskellish_user_src_suffixes :: [String] haskellish_src_suffixes = haskellish_user_src_suffixes ++ - [ "hspp", "hscpp", "hcr", "cmm" ] + [ "hspp", "hscpp", "hcr", "cmm", "cmmcpp" ] haskellish_suffixes = haskellish_src_suffixes ++ ["hc", "raw_s"] -cish_suffixes = [ "c", "cpp", "C", "cc", "cxx", "s", "S", "ll", "bc", "opt_bc" ] +cish_suffixes = [ "c", "cpp", "C", "cc", "cxx", "s", "S", "ll", "bc" ] extcoreish_suffixes = [ "hcr" ] -- Will not be deleted as temp files: haskellish_user_src_suffixes = [ "hs", "lhs", "hs-boot", "lhs-boot" ]