Safe Haskell | None |
---|---|
Language | Haskell98 |
Compiler stages.
A compiler stage is a sequence of standard transformations. Each of the individual transformations are expressed as a pipeline from DDC.Build.Pipeline. The stages here run several pipelines each, and contain the code that can dump the intermediate program after each transformation.
- data Config = Config {
- configLogBuild :: Bool
- configDump :: Bool
- configInferTypes :: Bool
- configSimplSalt :: Simplifier Int () Name
- configViaBackend :: ViaBackend
- configRuntime :: Config
- configRuntimeLinkStrategy :: RuntimeLinkStrategy
- configBuilder :: Builder
- configPretty :: ConfigPretty
- configSuppressHashImports :: Bool
- configModuleBaseDirectories :: [FilePath]
- configOutputFile :: Maybe FilePath
- configOutputDir :: Maybe FilePath
- configKeepLlvmFiles :: Bool
- configKeepSeaFiles :: Bool
- configKeepAsmFiles :: Bool
- configTaintAvoidTypeChecks :: Bool
- data ViaBackend
- data RuntimeLinkStrategy
- stageSourceTetraLoad :: Config -> Source -> Store -> [PipeCore (AnTEC SourcePos Name) Name] -> PipeText Name Error
- stageTetraLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageTetraToSalt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageFlowLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageFlowPrep :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageFlowRate :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageFlowLower :: Config -> Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name
- stageFlowWind :: Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name
- stageFlowToTetra :: Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name
- stageSaltLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageSaltOpt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageSaltToC :: Config -> Source -> Sink -> PipeCore () Name
- stageSaltToLLVM :: Config -> Source -> [PipeLlvm] -> PipeCore () Name
- stageCompileSalt :: Config -> Source -> FilePath -> Bool -> PipeCore () Name
- stageCompileLLVM :: Config -> Source -> FilePath -> Maybe [FilePath] -> PipeLlvm
Documentation
Configuration for main compiler stages.
Config | |
|
data ViaBackend Source #
data RuntimeLinkStrategy Source #
LinkDefault | Use the platform's default strategy. |
LinkStatic | Link the runtime statically. |
Tetra stages
stageSourceTetraLoad :: Config -> Source -> Store -> [PipeCore (AnTEC SourcePos Name) Name] -> PipeText Name Error Source #
Load and type check a Source Tetra module.
stageTetraLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error Source #
Load and type check a Core Tetra module.
stageTetraToSalt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name Source #
Convert a Core Tetra module to Core Salt.
This includes performing the Boxing transform.
Flow stages
stageFlowLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error Source #
Type check Core Flow.
stageFlowPrep :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name Source #
Prepare a Core Flow module for lowering.
stageFlowRate :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name Source #
Perform rate inference to transform vector operations to series
stageFlowLower :: Config -> Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name Source #
Lower a Core Flow module. Is needs to already be prepped, and have full type annotations.
stageFlowWind :: Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name Source #
Wind loop primops into tail recursive loops in a Core Flow module.
stageFlowToTetra :: Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name Source #
Wind loop primops into tail recursive loops in a Core Flow module.
Salt stages
stageSaltLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error Source #
Load and type check a Core Salt module.
stageSaltOpt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name Source #
Optimise Core Salt.
stageSaltToLLVM :: Config -> Source -> [PipeLlvm] -> PipeCore () Name Source #
Convert Core Salt to LLVM.
:: Config | |
-> Source | |
-> FilePath | Path of original source file. Build products are placed into the same dir. |
-> Bool | Should we link this into an executable |
-> PipeCore () Name |
Compile Core Salt via C code.