Commit graph

80 commits

Author SHA1 Message Date
Leonardo de Moura
fde8d35bbb refactor: declare passes when declaring transformations 2022-09-05 06:58:32 -07:00
Leonardo de Moura
1c41a750ed feat: add ReduceJpArity compiler pass 2022-09-05 06:58:32 -07:00
Leonardo de Moura
e0197b4e09 feat: add bindCases
It is similar to `Code.bind` but has special support for `inlineMatcher`
2022-09-04 19:04:21 -07:00
Leonardo de Moura
d0600b3750 fix: incorrect binder name being used
cc @hargoniX
2022-09-04 16:56:42 -07:00
Leonardo de Moura
abd37d8fd1 feat: check binder names at LCNF/Check.lean 2022-09-04 16:55:42 -07:00
Leonardo de Moura
01ca711859 feat: add PullFunDecls.lean 2022-09-04 16:44:45 -07:00
Leonardo de Moura
df16c5a0e7 feat: add Code.collectUsed and FunDecl.collectUsed 2022-09-04 13:05:48 -07:00
Leonardo de Moura
b3c5184772 chore: remove dead code 2022-09-04 07:14:01 -07:00
Henrik Böving
32157f0e42 feat: Basic compiler testing framework 2022-09-03 19:55:53 -07:00
Leonardo de Moura
56ea3af6e2 doc: Compiler/LCNF/Simp.lean 2022-09-03 19:44:10 -07:00
Leonardo de Moura
9f44e9c858 feat: simplify nested cases on the same discriminant 2022-09-03 19:44:10 -07:00
Leonardo de Moura
5478485de1 feat: allow "small prefix" at cases on cases optimization 2022-09-03 08:21:11 -07:00
Leonardo de Moura
bc88b0307e feat: cases on cases for new LCNF simplifier 2022-09-03 07:54:19 -07:00
Leonardo de Moura
196c9537f2 feat: eta reduction at toLCNF 2022-09-02 06:31:06 -07:00
Leonardo de Moura
d5dcd5e856 feat: eta-expand local function declarations that are not being inlined 2022-09-02 05:22:41 -07:00
Leonardo de Moura
e3a8574e15 perf: workaround for issue #316 2022-09-02 04:15:02 -07:00
Leonardo de Moura
dfdbec51ad fix: typo 2022-09-02 03:41:49 -07:00
Leonardo de Moura
baf4f1c152 perf: simpValue? before inlineApp? 2022-09-02 03:20:59 -07:00
Leonardo de Moura
6297b2efe7 feat: do not eagerly simplify function declarations that will be inlined 2022-09-01 21:13:14 -07:00
Leonardo de Moura
21a7066d77 feat: inline type class projections 2022-09-01 20:52:08 -07:00
Leonardo de Moura
0ed46003c6 feat: add CodeDecl helper type 2022-09-01 20:52:08 -07:00
Leonardo de Moura
0b0bd968b0 feat: support for inlining join points 2022-09-01 20:52:08 -07:00
Leonardo de Moura
61edf19334 fix: allow LCNF discriminant to have any type 2022-09-01 20:52:08 -07:00
Leonardo de Moura
30c75b4b88 feat: add simpCasesOnCtor 2022-09-01 20:52:08 -07:00
Leonardo de Moura
255d34d2ac feat: add simpValue? back 2022-09-01 20:52:08 -07:00
Leonardo de Moura
29eddad325 chore: only check if compiler.check is set to true 2022-09-01 07:18:47 -07:00
Leonardo de Moura
cedf9e980b feat: check LCNF parameters 2022-09-01 07:17:53 -07:00
Leonardo de Moura
9874ef3c66 feat: check whether LetDecl and FunDecl match their values in the LCNF local context 2022-09-01 07:05:07 -07:00
Leonardo de Moura
c201133d4d feat: LCNF local context dead variable checker
This commit also fixes a few local declaration leaks.
2022-08-31 21:07:21 -07:00
Leonardo de Moura
ddab48a154 fix: erase dead variables 2022-08-31 20:43:13 -07:00
Leonardo de Moura
d00627364c feat: add simp compiler pass 2022-08-31 18:10:32 -07:00
Leonardo de Moura
ba0835e387 feat: refresh binder names during internalization 2022-08-31 18:10:32 -07:00
Leonardo de Moura
25447af13c feat: new code inliner 2022-08-31 18:10:32 -07:00
Henrik Böving
c1949e05e0 feat: migrate to new pass manager 2022-08-31 16:28:07 -07:00
Henrik Böving
fe63bd2e8e feat: basic pass manager 2022-08-31 16:28:07 -07:00
Leonardo de Moura
2fc38fb118 feat: instantiateTypeLevelParams and instantiateValueLevelParams for LCNF.Decl 2022-08-30 20:20:39 -07:00
Leonardo de Moura
c451bf0c91 feat: add simpFunDecl 2022-08-30 11:45:05 -07:00
Leonardo de Moura
ca80bc52dc feat: LCNF.simp .let case 2022-08-29 09:52:16 -07:00
Leonardo de Moura
7b161d33d1 refactor: add MonadFVarSubst class 2022-08-29 09:52:16 -07:00
Siddharth Bhat
a7b128fee1 doc: explanations for LCNF. 2022-08-29 07:17:25 -07:00
Leonardo de Moura
062d4728a1 feat: more LCNF update functions
and bug fixes at CSE
2022-08-28 19:00:49 -07:00
Leonardo de Moura
5552d610e8 chore: missing updateCases! 2022-08-28 16:30:54 -07:00
Leonardo de Moura
e80028b7d1 feat: add pure field to LetDecl, add helper functions for updating LCNF code
The update functions try to minimize the amount of memory allocation
2022-08-28 08:55:35 -07:00
Leonardo de Moura
d5fa178fc3 feat: modify FVarSubst used in the new code generator 2022-08-28 08:55:35 -07:00
Leonardo de Moura
6a9f8ad919 fix: Compiler/LCNF/ElimDead.lean 2022-08-28 08:55:35 -07:00
Leonardo de Moura
cd0dd4cc2f feat: start simp for new LCNF format 2022-08-27 19:59:31 -07:00
Leonardo de Moura
9446ae3056 feat: add cleanup function for CompilerM 2022-08-27 18:35:30 -07:00
Leonardo de Moura
30d8ae70f7 chore: remove workarounds 2022-08-27 10:56:15 -07:00
Leonardo de Moura
0f40dfc063 feat: add FunDecl.etaExpand 2022-08-27 10:41:54 -07:00
Leonardo de Moura
11c8253f6c feat: more update functions for LCNF 2022-08-27 10:41:54 -07:00