Commit graph

65 commits

Author SHA1 Message Date
Mario Carneiro
583e023314 chore: snake-case attributes (part 2) 2022-10-19 09:28:08 -07:00
Leonardo de Moura
0a126b7702 perf: better support for "inlineable" instances 2022-10-14 08:42:50 -07:00
Leonardo de Moura
31f2acd97a chore: cleanup trace messages 2022-10-13 18:56:17 -07:00
Leonardo de Moura
1f54c0126c doc: add note at Decl.simp 2022-10-13 04:26:05 -07:00
Leonardo de Moura
8fe4b75c48 feat: do not inline definitions occurring in instances at the base phase 2022-10-12 16:24:16 -07:00
Leonardo de Moura
45974229d2 feat: reactivate extendJoinPointContext at mono phase
closes #1686

cc @hargoniX
2022-10-07 16:27:44 -07:00
Leonardo de Moura
ddbf4c01eb refactor: add DiscrM.lean 2022-10-03 19:00:30 -07:00
Leonardo de Moura
fd5f3a5bad feat: track recursively inlining
closes #1657
see #1646

https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/inline.20codegen.20crash/near/301099703
2022-09-27 16:26:49 -07:00
Leonardo de Moura
1e75001405 feat: preserve user provided names at LCNF Simp
It helps preserving let-declaration names in pure code, but it is not
very useful for monadic let-decls (e.g., `let x <- act`). The binder
names are often lost we eliminating the abstraction layers.
2022-09-26 21:04:13 -07:00
Leonardo de Moura
837ce4374c feat: use reduceJpArity after successful simpJpCases? 2022-09-26 07:25:29 -07:00
Leonardo de Moura
35ca2b203c refactor: split Simp.lean 2022-09-26 07:04:20 -07:00
Mario Carneiro
85119ba9d1 chore: move Std.* data structures to Lean.* 2022-09-26 05:46:04 -07:00
Leonardo de Moura
fd1ae3118c feat: replace isCasesOnCases? with simpJpCases?
It addresses the code explosion issue with the old optimization.
For example, the resulting size for `Lean.Json.Parser.escapedChar`
went from 31593 to 361.
2022-09-25 20:57:24 -07:00
Leonardo de Moura
bbac49e925 feat: add collectJpCasesInfo
Collect statistics for implementing new optimization that will replace `isCasesOnCases?`
2022-09-25 20:57:24 -07:00
Leonardo de Moura
c858aa3088 feat: replace getStage1Decl? with new getDecl? 2022-09-24 15:00:19 -07:00
Leonardo de Moura
6343b97acb feat: display inlining stack when maximum recursion depth has been reached 2022-09-24 14:20:21 -07:00
Leonardo de Moura
947811cab8 fix: zero exit points != one exit point 2022-09-24 08:13:17 -07:00
Leonardo de Moura
c333581689 fix: functions occurring as arguments of other functions are not inlined 2022-09-23 14:43:06 -07:00
Leonardo de Moura
609d241ad4 fix: improve updateFunDeclInfo precision 2022-09-23 13:56:14 -07:00
Leonardo de Moura
727ee79f05 fix: exponential blowup at LCNF simp 2022-09-20 17:03:40 -07:00
Leonardo de Moura
990b031871 feat: add translator attribute to MonadFVarSubst class
See new comments.
2022-09-20 16:58:27 -07:00
Leonardo de Moura
70f615d074 fix: avoid "unknown constant" error message for auxiliary declarations 2022-09-18 15:39:58 -07:00
Leonardo de Moura
db6ee72aed chore: typo 2022-09-17 09:55:46 -07:00
Leonardo de Moura
3c6dee8048 fix: LCNF eta expansion bug at Simp.lean 2022-09-16 18:00:27 -07:00
Leonardo de Moura
c1b7accd12 refactor: LCNF local context
The previous implementation had a few issues:
- Function (and join point) declarations were being inserted into two different hashmaps.
- `borrow` information was not available for parameters.
- No proper erase functions.
2022-09-14 19:25:16 -07:00
Gabriel Ebner
f1b5fa53f0 chore: use new comment syntax 2022-09-14 08:26:17 -07:00
Leonardo de Moura
fccb60fb69 feat: support for [inlineIfReduce] at new compiler 2022-09-13 18:23:42 -07:00
Leonardo de Moura
1350a57a03 refactor: remove pure field from LCNF.LetDecl
We decide that in phase 3 we will assume everything is impure, and
this kind of fine-grain tracking is not worth it.
2022-09-12 19:13:43 -07:00
Leonardo de Moura
506cf01d94 fix: bug at simpCasesOnCtor? 2022-09-12 16:02:19 -07:00
Henrik Böving
c6db1099d0 feat: add occurences and phases to PassManager 2022-09-10 14:58:49 -07:00
Leonardo de Moura
ca098d3769 feat: inline applications of the form inline (f ...)
The `inline` identity function is a directive for the compiler.
2022-09-10 13:28:49 -07:00
Leonardo de Moura
a40118c79d chore: disable eager applyCasesOnImplementedBy
It must be performed at phase 2.
We still want to perform the regular `[implementedBy]` replacements at
phase 1 since they affect code specialization.
2022-09-08 14:50:27 -07:00
Leonardo de Moura
1c188b62cd chore: typo 2022-09-08 14:50:27 -07:00
Leonardo de Moura
0a21603cdc feat: apply implementedBy replacements at second simp pass 2022-09-07 20:38:16 -07:00
Leonardo de Moura
661eb39bc8 feat: add inlinePartial config option 2022-09-06 20:46:17 -07:00
Leonardo de Moura
56f0d6c183 feat: specialize partial applications of local functions 2022-09-06 06:44:33 -07:00
Leonardo de Moura
c769808a4e chore: add TODO 2022-09-05 19:35:17 -07:00
Leonardo de Moura
1812e86c7f feat: eta expand partial applications of functions that take local instances as arguments 2022-09-05 19:33:22 -07:00
Leonardo de Moura
7113d71cd2 doc: LCNF/Simp.lean docstrings 2022-09-05 17:36:35 -07:00
Leonardo de Moura
1207e5e285 feat: erase cases when all alternatives are the same 2022-09-05 17:22:54 -07:00
Leonardo de Moura
58d8224d9e feat: add LCNF cases default 2022-09-05 14:08:14 -07:00
Leonardo de Moura
fde8d35bbb refactor: declare passes when declaring transformations 2022-09-05 06:58:32 -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
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