mirror of
https://github.com/grin-compiler/grin.git
synced 2024-09-11 07:25:28 +03:00
GRIN is a compiler back-end for lazy and strict functional languages with whole program optimization support.
compilerdata-flow-analysisfunctional-programminghaskellllvmoptimisationstarred-grin-compiler-repostarred-repo
bugs | ||
grin | ||
images | ||
papers | ||
.gitignore | ||
.travis.yml | ||
AbstractInterpretation.md | ||
bench.sh | ||
debug_tooling | ||
Design.md | ||
Documentation.md | ||
GRIN-LLVM-CodeGen.md | ||
GRIN-Type-System.md | ||
MemoryManagement.md | ||
MVP.md | ||
node_visualization | ||
Readings.md | ||
README.md | ||
RUNTIME.md | ||
stack.yaml | ||
todo.just-to-practice | ||
TODO.md |
GRIN
The name GRIN is short for Graph Reduction Intermediate Notation, and it is an intermediate language for graph reduction. For an overview read The GRIN Project article. To grasp the details take your time and read Urban Boquist's PhD thesis on Code Optimisation Techniques for Lazy Functional Languages .
Simplifying Transformations
Transformation | Schema |
---|---|
vectorisation | |
case simplification | |
split fetch operation | |
right hoist fetch operation | |
register introduction |
Optimising Transformations
- evaluated case elimination
- trivial case elimination
- sparse case optimisation
- update elimination
- copy propagation
- constant propagation
- dead procedure elimination
- dead variable elimination
- common sub-expression elimination
- late inlining
- generalised unboxing
- arity raising
- dead parameter elimination
- case copy propagation
- case hoisting
- whnf update elimination requires sharing analysis