projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
emit a helpful error message for missing DPH packages
[ghc-hetmet.git]
/
compiler
/
main
/
DriverPhases.hs
diff --git
a/compiler/main/DriverPhases.hs
b/compiler/main/DriverPhases.hs
index
eb64134
..
d85335f
100644
(file)
--- a/
compiler/main/DriverPhases.hs
+++ b/
compiler/main/DriverPhases.hs
@@
-35,7
+35,7
@@
module DriverPhases (
#include "HsVersions.h"
#include "HsVersions.h"
-import Panic ( panic )
+import Outputable
import System.FilePath
-----------------------------------------------------------------------------
import System.FilePath
-----------------------------------------------------------------------------
@@
-80,6
+80,9
@@
data Phase
| SplitMangle -- after mangler if splitting
| SplitAs
| As
| SplitMangle -- after mangler if splitting
| SplitAs
| As
+ | 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
| CmmCpp -- pre-process Cmm source
| Cmm -- parse & compile Cmm code
@@
-88,6
+91,9
@@
data Phase
| StopLn -- Stop, but linking will follow, so generate .o file
deriving (Eq, Show)
| 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")
anyHsc :: Phase
anyHsc = Hsc (panic "anyHsc")
@@
-109,6
+115,9
@@
eqPhase Mangle Mangle = True
eqPhase SplitMangle SplitMangle = True
eqPhase SplitAs SplitAs = True
eqPhase As As = True
eqPhase SplitMangle SplitMangle = True
eqPhase SplitAs SplitAs = True
eqPhase As As = 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
eqPhase CmmCpp CmmCpp = True
eqPhase Cmm Cmm = True
eqPhase StopLn StopLn = True
@@
-133,6
+142,13
@@
nextPhase HCc = Mangle
nextPhase Mangle = SplitMangle
nextPhase SplitMangle = As
nextPhase As = SplitAs
nextPhase Mangle = SplitMangle
nextPhase SplitMangle = As
nextPhase As = SplitAs
+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
nextPhase SplitAs = StopLn
nextPhase Ccpp = As
nextPhase Cc = As
@@
-160,6
+176,9
@@
startPhase "raw_s" = Mangle
startPhase "split_s" = SplitMangle
startPhase "s" = As
startPhase "S" = As
startPhase "split_s" = SplitMangle
startPhase "s" = As
startPhase "S" = As
+startPhase "ll" = LlvmOpt
+startPhase "bc" = LlvmLlc
+startPhase "lm_s" = LlvmMangle
startPhase "o" = StopLn
startPhase "cmm" = CmmCpp
startPhase "cmmcpp" = Cmm
startPhase "o" = StopLn
startPhase "cmm" = CmmCpp
startPhase "cmmcpp" = Cmm
@@
-184,6
+203,9
@@
phaseInputExt Cc = "c"
phaseInputExt Mangle = "raw_s"
phaseInputExt SplitMangle = "split_s" -- not really generated
phaseInputExt As = "s"
phaseInputExt Mangle = "raw_s"
phaseInputExt SplitMangle = "split_s" -- not really generated
phaseInputExt As = "s"
+phaseInputExt LlvmOpt = "ll"
+phaseInputExt LlvmLlc = "bc"
+phaseInputExt LlvmMangle = "lm_s"
phaseInputExt SplitAs = "split_s" -- not really generated
phaseInputExt CmmCpp = "cmm"
phaseInputExt Cmm = "cmmcpp"
phaseInputExt SplitAs = "split_s" -- not really generated
phaseInputExt CmmCpp = "cmm"
phaseInputExt Cmm = "cmmcpp"
@@
-193,9
+215,9
@@
haskellish_src_suffixes, haskellish_suffixes, cish_suffixes,
extcoreish_suffixes, haskellish_user_src_suffixes
:: [String]
haskellish_src_suffixes = haskellish_user_src_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"]
haskellish_suffixes = haskellish_src_suffixes ++ ["hc", "raw_s"]
-cish_suffixes = [ "c", "cpp", "C", "cc", "cxx", "s", "S" ]
+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" ]
extcoreish_suffixes = [ "hcr" ]
-- Will not be deleted as temp files:
haskellish_user_src_suffixes = [ "hs", "lhs", "hs-boot", "lhs-boot" ]